比赛 20120418s 评测结果 AAAAAAAAAA
题目名称 捉迷藏 最终得分 100
用户昵称 临轩听雨ゐ 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2012-04-18 11:17:16
显示代码纯文本
#include <fstream>
#include <cstdio>
#include <cstdlib>
#include <queue>   
#include <vector>  
using namespace std;
const int maxn = 20000;
int n,m;
std::vector<int> adj[maxn];
int dist[maxn];
int dcount[maxn];
int best = 0; 
int main() 
{
    ifstream in ("hideseek.in");
    ofstream out ("hideseek.out");
    in>>n>>m;
    for (int i=0;i<m;i++)
	{
        int a,b;
        in>>a>>b;
		a--; 
		b--;
        adj[a].push_back(b);
        adj[b].push_back(a);
    }
    dist[0] = 1;  
    std::queue<int> q;
	q.push(0);       
    while (!q.empty()) 
	{
        int v = q.front();
		q.pop();
        dcount[dist[v]]++;
        if (dist[best] < dist[v] || (dist[best] == dist[v] && v < best))
            best = v;
        for (int i=0;i<adj[v].size();i++)
		{
            int ov = adj[v][i];
            if (dist[ov]) 
				continue;
            dist[ov] = dist[v] + 1;
            q.push(ov);
        }
    }
    out<< best+1<< ' '<< dist[best]-1<< ' '<< dcount[dist[best]];
    return 0;
}