Problem Description
采用邻接矩阵存储无向连通图,输出顶点v的度和所有邻接点。
Input
有多组测试数据,每组的第一行为图的顶点数n和边数e(0<n<20);第二行为n个顶点的值,按输入顺序从下标0开始存储;接下来有e行,每行表示一条边所依附的两个顶点的下标i和j,中间用空格隔开;最后一行为顶点下标v(0<=v<n)。
Output
每组输出占两行,第一行为顶点v的度,第二行按字母表顺序输出顶点v的邻接点,每两个邻接点之间有一逗号。
Sample Input
4 4
ABCD
0 1
0 3
1 2
1 3
3
6 6
ABCDEF
0 1
0 5
1 2
1 3
2 4
3 4
1
Sample Output
2
A,B
3
A,C,D
#include<iostream>
using namespace std;
int main()
{
int n,e,j,i,k,q,arc[21][21];
char V[21];
while(cin>>n>>e>>V)
{
int count=0;
memset(arc,0,sizeof(arc));
for(k=0;k<e;k++)
{
cin>>i>>j;
arc[i][j]=arc[j][i]=1;
}
cin>>q;
int sum=0;
for(i=0;i<n;i++)
{
sum+=arc[q][i];
}
cout<<sum<<endl;
int f=0;
for(i=0;i<n;i++)
{
if(arc[q][i]==1)
{
if(f!=0)
cout<<",";
f++;
cout<<V[i];
}
}
cout<<endl;
}
return 0;
}