ZOJ 2913 Bus Pass BFS水题

来源:互联网 发布:亚信智慧数据科技 编辑:程序博客网 时间:2024/05/07 08:49
不过我感觉这道题的数据有点问题,WA了我好几次
这道题考点就是用SPFA求最短路
#include<cstdio>#include<queue>#include<cstring>#define INF 1000000000using namespace std;int te[10009],map[10009][15];int num[10009],res[10009];int nr,first,nz;int MAX (int u,int v){return u>v?u:v;}void BFS(int v){int i,j,k,tem;for(i=0;i<=10000;i++)te[i]=INF;queue<int> que;que.push(v);te[v]=1;while(!que.empty()){tem=que.front();que.pop();for(i=1;i<=num[tem];i++){if(te[map[tem][i]]>te[tem]+1){te[map[tem][i]]=te[tem]+1;que.push(map[tem][i]);}}}for(k=0;k<=10000;k++){if(te[k]!=INF){res[k]=MAX(res[k],te[k]);}}}int main(){int t,T,i,j,id,tem,sum,k;int secon,ac,th;scanf("%d",&T);for(t=1;t<=T;t++){scanf("%d %d",&nz,&nr);for(i=1;i<=nz;i++){id;scanf("%d",&id);scanf("%d",&num[id]);for(j=1;j<=num[id];j++){scanf("%d",&map[id][j]);}}for(i=0;i<=10000;i++)res[i]=-1;for(i=1;i<=nr;i++){sum;scanf("%d",&sum);for(j=1;j<=sum;j++){tem;scanf("%d",&tem);BFS(tem);}}ac=INF;for(i=0;i<=10000;i++){if(res[i]!=-1){if(ac>res[i]){ac=res[i];th=i;}}}printf("%d %d\n",ac,th);}}

原创粉丝点击