Time Limit: 1000MS Memory limit: 65536K
题目描述
输入
输出
示例输入
2 1 1 2 2 1 2 1
示例输出
NO 1
提示
#include<bits/stdc++.h>
using namespace std;
int mmap[1010][1010];
int vis[1010];
struct node
{
int data;
int con;
}p,temp;
void BFS(int k)
{
queue<node>q;
p.data=k;
p.con=0;
q.push(p);
vis[k]=1;
while(!q.empty())
{
temp=q.front();
q.pop();
if(temp.data==1)
{
cout<<temp.con<<endl; //最先到达1的就是最短的。
return;
}
for(int i=1; i<=k; i++)
{
if(!vis[i] && mmap[temp.data][i]) //注意此处是mmap[mmap][data]
{
p.data=i;
p.con=temp.con+1;
q.push(p);
vis[i]=1;
}
}
}
cout<<"NO"<<endl;
}
int main()
{
int m,k;
int u,v;
while(cin>>k>>m)
{
memset(mmap,0,sizeof(mmap));
memset(vis,0,sizeof(vis));
for(int i=0; i<m; i++)
{
cin>>u>>v;
if(u!=v) //连通图的结点数和边数不可能一样
mmap[u][v]=1;
}
BFS(k);
}
}