比赛 |
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;
}