当日总结

7-1 邻接矩阵存储创建有向图
分数 15

全屏浏览

切换布局
作者 liudan
单位 石家庄铁道大学
编程实现:以邻接矩阵的存储方式,创建一个有向图,顶点为字符型。

输入格式:
第一行输入顶点个数和边的个数,中间用空格分开。下一行开始依次输入顶点,空格或回车分开。接着依次输入边依附的两个顶点。

输出格式:
若数据合理,则输出对应的矩阵。若顶点个数为0,则输出"error"。若顶点个数为1,边个数不合理,则输出"error"。

输入样例:
在这里给出一组输入。例如:

4 4
a b c d
a b
a c
c d
d a
输出样例:
在这里给出相应的输出。例如:

0 1 1 0
0 0 0 0
0 0 0 1
1 0 0 0

include

include

using namespace std;
int getIndex(vector vs,char c)
{
for(size_t i=0;i<vs.size();i++)
{
if(vs[i]c)
{
return i;
}
}
return -1;
}
int main()
{
int num_v,num_e;
cin>>num_v>>num_e;
if(num_v
0)
{
cout<<"error";
return 0;
}
else if(num_v==1)
{
if(num_e!=0)
{
cout<<"error";
return 0;
}
else{
char temp;
cin>>temp;
cout<<0;
return 0;
}
}
vectorvs(num_v);
for(int i=0;i<num_v;i++)
{
cin>>vs[i];
}
vector<vector> adj_matrix(num_v,vector(num_v,0));
for(int i=0;i<num_e;i++)
{
char c1,c2;
cin>>c1>>c2;
int id1=getIndex(vs,c1);
int id2=getIndex(vs,c2);
adj_matrix[id1][id2]=1;
}
for(int i=0;i<num_v;i++)
{
for(int j=0;j<num_v;j++)
{
if(j!=0)cout<<" ";
cout<<adj_matrix[i][j];
}
cout<<endl;
}
return 0;
}

posted @ 2025-12-17 23:42  lagranSun  阅读(10)  评论(0)    收藏  举报