zoj 2913 BFS

简介: //zoj 2913 BFS// 从每条线路上的每个地区出发进行BFS遍历,// 统计每条线路上每个地区到其他地区最短距离中的最大值,求出所有最大值中的最小值。#include<stdio.h>#include<queue>#include<string.h>using namespace std;#define MAX 10000#de
//zoj 2913 BFS
// 从每条线路上的每个地区出发进行BFS遍历,
// 统计每条线路上每个地区到其他地区最短距离中的最大值,求出所有最大值中的最小值。
#include<stdio.h>
#include<queue>
#include<string.h>
using namespace std;
#define MAX 10000
#define INF 100000
int nz,nr,cur;
int mz[MAX];
int Edge[MAX][10];
int res[MAX],reach[MAX];
void bfs(int s)
{
    int i,a,b,val,at;
    queue<int> q[2];
    a=0;b=1;val=0;
    if(reach[s]<cur)
    {
        q[b].push(s);
        reach[s]=cur;
        res[s]=max(res[s],val+1);
    }
    while(!q[b].empty())
    {
        swap(a,b);
        val++;
        while(!q[a].empty())
        {
            at=q[a].front();
            q[a].pop();
            for(i=0;i<mz[at];i++)
                if(reach[Edge[at][i]]<cur)
                {
                    q[b].push(Edge[at][i]);
                    reach[Edge[at][i]]=cur;
                    res[Edge[at][i]]=max(res[Edge[at][i]],val+1);
                }
        }
    }
}
int main()
{
   //freopen("input.txt","r",stdin);
    int T,i,j,t,id,mr,ret,center;
    scanf("%d",&T);
    for(t=0;t<T;t++)
    {
        memset(reach,-1,sizeof(reach));
        memset(res,0,sizeof(res));
        cur=0;
        scanf("%d%d",&nz,&nr);
        for(i=0;i<nz;i++)
        {
            scanf("%d",&id);
            scanf("%d",&mz[id]);
            for(j=0;j<mz[id];j++)
            scanf("%d",&Edge[id][j]);
        }
        for(i=0;i<nr;i++)
        {
            scanf("%d",&mr);
            for(j=0;j<mr;j++)
            {
                scanf("%d",&id);
                bfs(id);
                cur++;
            }
        }
        ret=MAX,center=-1;
        for(i=0;i<10000;i++)
        {
            if(reach[i]==cur-1&&res[i]<ret)
            {
                ret=res[i];
                center=i;
            }
        }
        printf("%d %d\n",ret,center);
    }
    return 0;
}

目录
相关文章
|
算法
1091 zoj Knight Moves的BFS算法和DFS
1091 zoj Knight Moves的BFS算法和DFS
70 0
|
图形学 C++
ZOJ1117 POJ1521 HDU1053 Huffman编码
Huffman编码的思想就是贪心,我们这里使用stl里的优先队列,priority_queue使用堆进行优化,虽然自己也可以写一个堆,但我感觉对于这道题有点主次不分了,再次感觉到stl确实是一个很强大的东西。
57 0
HDOJ 1081(ZOJ 1074) To The Max(动态规划)
HDOJ 1081(ZOJ 1074) To The Max(动态规划)
86 0
HDOJ 1081(ZOJ 1074) To The Max(动态规划)
|
机器学习/深度学习
POJ 1775 (ZOJ 2358) Sum of Factorials
POJ 1775 (ZOJ 2358) Sum of Factorials
151 0
|
人工智能 机器学习/深度学习
POJ 1775 (ZOJ 2358) Sum of Factorials
Description John von Neumann, b. Dec. 28, 1903, d. Feb. 8, 1957, was a Hungarian-American mathematician who made important contributions t...
1156 0
最短路径-zoj-2797
zoj-2797-106 miles to Chicago In the movie "Blues Brothers", the orphanage where Elwood and Jack were raised may be sold to the Board of Education if they do not pay 5000 dollars in taxes at the 
1192 0
最小生成树-并查集-Kruskal-zoj-2048-special judge
Highways description The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has a very poor system of public highways. The Flatopian government is aware of this problem and has
1205 0

热门文章

最新文章