uva 567 risk

来源:互联网 发布:css3动画和js动画 编辑:程序博客网 时间:2024/04/30 16:17

#include <iostream>
#include <cstdio>
#include <memory.h>

using namespace std;
const int MAX=25;
struct Vertex{
    int num,dir;
};
int map[MAX][MAX],vis[MAX],
    num,ttt,c,start,end;
Vertex q[50],v,t;
void bfs(){
    bool findFlag=0;
    int front=1,rear=2,ans=0;
    q[front].num=start;
    q[front].dir=0;
    vis[start]=1;
    while(front<rear&&!findFlag){
        v=q[front++];
        for(int i=1;i<=20;i++){
            if(map[v.num][i]&&!vis[i]){
                if(i==end){
                    ans=v.dir+1;
                    findFlag=1;
                    break;
                }
                t.num=i;
                t.dir=v.dir+1;
                vis[i]=1;
                q[rear++]=t;
            }
        }
    }
    printf("%2d to %2d: %d/n",start,end,ans);
}
int main()
{
    freopen("i.txt","r",stdin);
    int caseNum=1;
    while(cin>>num){
        memset(map,0,sizeof(map));
        for(int i=0;i<num;i++){
            cin>>ttt;
            map[1][ttt]=map[ttt][1]=1;
        }
        for(int i=2;i<=19;i++){
            cin>>num;
            while(num--){
                cin>>ttt;
                map[i][ttt]=map[ttt][i]=1;
            }
        }
        cout<<"Test Set #"<<caseNum++<<endl;
        cin>>c;
        //cout<<c<<endl;
        while(c--){
            cin>>start>>end;
            //cout<<start<<" "<<end<<endl;
            memset(vis,0,sizeof(vis));
            bfs();
        }
        cout<<endl;
    }
    return 0;
}
简单的bfs

原创粉丝点击