uva336(未ac)

来源:互联网 发布:中国电信网络质量监控 编辑:程序博客网 时间:2024/05/16 04:37
#include <iostream>#include <stdio.h>#include <queue>#include <vector>#include <string.h>#include <map>using namespace std;map<int,vector<int> > G;//因为点数不连续,所以用map,而不用vectorint ans;int n;//不仅是因为点数不连续,还因为每个点到这个点的步数不一样,我们要取最小值int x,y;int count_;void init(){    G.clear();}void read(){    int a,b;    for(int i=0;i<n;i++)    {        scanf("%d%d",&a,&b);        G[a].push_back(b);        G[b].push_back(a);    }}void bfs(){    map<int,int> vis;    queue<int> q;    ans=G.size();    vis[x]=0;    q.push(x);    while(!q.empty())    {        int k=q.front();        q.pop();        ans--;        if(vis[k]<y)        {            for(int i=0;i<G[k].size();i++)            {                int m=G[k][i];                if(vis.count(m)==0)                {                     vis[m]=vis[k]+1;                q.push(m);                }            }        }    }}int main(){    while(scanf("%d",&n),n)    {        init();        read();        while(scanf("%d%d",&x,&y) && x &&y)        {            count_++;            bfs();            cout<<"Case "<<count_<<": "<<ans<<" nodes not reachable from node "            <<x<<" with TTL = "<<y<<"."<<endl;        }    }    return 0;}
原创粉丝点击