// UVa 10608 - Friends #include <iostream> using namespace std; int color[30001], count[30001], next[30001], start[30001], end[30001]; void paint(int a, int b) { for (int j = start[a]; j != 0; j = next[j]) color[j] = b; count[b] += count[a]; next[end[b]] = start[a]; end[b] = end[a]; } int main() { int t; for (cin >> t; t; t--) { int n, m; cin >> n >> m; for (int i = 1; i <= n; i++) { color[i] = i; count[i] = 1; next[i] = 0; start[i] = i; end[i] = i; } for (; m; m--) { int a, b; cin >> a >> b; if (color[a] == color[b]) continue; if (count[color[a]] < count[color[b]]) paint(color[a], color[b]); else paint(color[b], color[a]); } int sol = min(1, n); for (int i = 1; i <= n; i++) if (count[color[i]] > sol) sol = count[color[i]]; cout << sol << endl; } return 0; }
Tuesday, August 25, 2015
UVa 10608 - Friends
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment