結果
問題 |
No.812 Change of Class
|
ユーザー |
![]() |
提出日時 | 2019-04-17 13:11:24 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,603 bytes |
コンパイル時間 | 842 ms |
コンパイル使用メモリ | 86,076 KB |
実行使用メモリ | 9,280 KB |
最終ジャッジ日時 | 2024-06-12 20:53:23 |
合計ジャッジ時間 | 6,682 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 WA * 1 |
other | AC * 10 WA * 50 |
ソースコード
#include <iostream> #include <vector> #include <algorithm> #include <map> #include <string> #include <queue> #include <stack> #include <math.h> #include <set> #define ALL(obj) (obj).begin(),(obj).end() #define RALL(obj) (obj).rbegin(),(obj).rend() #define P pair<int, int> #define MOD 1000000007 #define INF 2147483647 #define NINF (-2147483647-1) #define LLINF 9223372036854775807 using ll = long long; using namespace std; struct edge { int to; edge(int to) :to(to){} }; int main() { int N, M; cin >> N >> M; vector<vector<edge>> G(N,vector<edge>()); for (int i = 0; i < M; i++) { int p, q; cin >> p >> q; p--; q--; G[p].push_back(edge(q)); G[q].push_back(edge(p)); } int Q; cin >> Q; vector<bool> visited(N); vector<P> ans(Q); for (int i = 0; i < Q; i++) { int a, m = -1, cnt = -1; cin >> a; a--; queue<P> que; fill(visited.begin(), visited.end(), false); que.push(P(a,0)); while (!que.empty()) { P p = que.front(); que.pop(); if (visited[p.first]) continue; visited[p.first] = true; cnt++; for (int j = 0; j < G[p.first].size(); j++) { que.push(P(G[p.first][j].to, p.second + 1)); } m = max(m, p.second); } ans[i].first = cnt; ans[i].second = max(0,m-1); } for (int i = 0; i < Q; i++) { cout << ans[i].first << " " << ans[i].second << endl; } getchar(); getchar(); return 0; }