// UVa 459 - Graph Connectivity #include <iostream> #include <string.h> #include <string> using namespace std; bool yet['Z' + 1]; bool lnk['Z' + 1]['Z' + 1]; char n; void dfs(char c) { yet[c] = false; for (int j = 'A'; j <= n; j++) if (yet[j] && lnk[c][j]) dfs(j); } int main() { int cases; cin >> cases; string line; getline(cin, line); getline(cin, line); for (; cases; cases--) { getline(cin, line); memset(lnk, false, sizeof(lnk)); memset(yet, true, sizeof(yet)); n = line[0]; while (getline(cin, line) && line.size() > 0) { lnk[line[0]][line[1]] = true; lnk[line[1]][line[0]] = true; } int sol = 0; for (char c = 'A'; c <= n; c++) { if (yet[c]) { sol++; dfs(c); } } cout << sol << endl; if (cases > 1) cout << endl; } return 0; }
Monday, June 8, 2015
UVa 459 - Graph Connectivity
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment