結果
| 問題 |
No.812 Change of Class
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-04-12 23:13:37 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 232 ms / 4,000 ms |
| コード長 | 1,261 bytes |
| コンパイル時間 | 1,513 ms |
| コンパイル使用メモリ | 167,636 KB |
| 実行使用メモリ | 11,288 KB |
| 最終ジャッジ日時 | 2024-06-12 19:53:10 |
| 合計ジャッジ時間 | 8,171 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 60 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
#define int long long
vector<int> graph[100010];
signed main(){
int n, m;
cin >> n >> m;
int a, b;
for(int i = 0;i < m;i++){
cin >> a >> b;
a--, b--;
graph[a].push_back(b);
graph[b].push_back(a);
}
int q;
cin >> q;
for(int p = 0;p < q;p++){
int dist[100010];
memset(dist, -1, sizeof(dist));
int fi;
cin >> fi;
queue<pair<int, int>> que;
fi--;
que.push(make_pair(fi, 0));
int cnt = 0;
while(!que.empty()){
int idx = que.front().first;
int cost = que.front().second;
que.pop();
if(dist[idx] != -1) continue;
dist[idx] = cost;
if(cost != 0) cnt++;
for(int i = 0;i < graph[idx].size();i++){
if(dist[graph[idx][i]] == -1){
que.push(make_pair(graph[idx][i], cost+1));
}
}
}
int ma = -2;
for(int i = 0;i < n;i++){
ma = max(ma, dist[i]);
}
int ans;
int i;
for(i = 0,ans=1;ans < ma;i++,ans*=2);
cout << cnt << " " << i << endl;
}
return 0;
}