#include <iostream>
using namespace std;
const int MAXVEX=4;
const int INFINITY=5200;
struct graph //建立图的邻接矩阵,分别是顶点,邻接矩阵,顶点数,边数
{
int vertex[MAXVEX];
int arc[MAXVEX][MAXVEX];
int numver,numedgs;
}MGraph;
void CreateGraph(graph *p) //建立图
{
cout<<"请输入图的顶点数与边数:"<<endl;
cin>>p->numver>>p->numedgs; /*输入顶点数,边数*/
int i=0;
for(int a=0;a<MAXVEX;a++) /*初始化邻接矩阵,让矩阵先都为无穷大*/
{
for(int b=0;b<MAXVEX;b++)
p->arc[a][b]=INFINITY;
}
while(i<p->numver) /*输入顶点*/
{
cout<<"请输入顶点"<<endl;
cin>>p->vertex[i];
i++;
}
i=1;
while(i<=p->numedgs) /*将图的边放入邻接矩阵*/
{
cout<<"请输入该边所依附的邻接点:"<<endl;
int a,b,w;
cin>>a>>b;
cout<<"请输入该边的权重"<<endl;
cin>>w;
p->arc[a-1][b-1]=w;
p->arc[b-1][a-1]=p->arc[a-1][b-1]; /*因为是无向图,所以邻接矩阵是对称矩阵*/
i++;
}
}
int main()
{
graph *p=new graph;
CreateGraph(p);
for(int i=0;i<p->numver;i++) /*循环,输出邻接矩阵*/
{
for(int j=0;j<p->numver;j++)
{
if(j+1==p->numver)
cout<<p->arc[i][j]<<endl;
else
cout<<p->arc[i][j]<<'\t';
}
}
return 0;
}