Submission #1139718

#TimeUsernameProblemLanguageResultExecution timeMemory
1139718robySwimming competition (LMIO18_plaukimo_varzybos)C++20
0 / 100
1 ms2368 KiB
#include <iostream> #include <queue> #include <vector> #include <set> using namespace std; const int MAX = 2e4 + 7; bool viz[MAX] = {0}; vector<int> vecini[MAX]; vector<int> bus[MAX]; set<int> s[MAX]; int cnt[MAX]; int k; void bfs(int start) { viz[start] = true; queue<int> q; q.push(start); while (!q.empty()) { int curr = q.front(); q.pop(); for (auto x : vecini[curr]) { if (!viz[x]) { q.push(x); s[k].insert(x); viz[x] = true; } } } } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; int m; cin >> m; for (int i = 0; i < m; ++i) { int a, b; cin >> a >> b; char c; cin >> c; if (c == 'T') { vecini[a].push_back(b); vecini[b].push_back(a); } else { bus[a].push_back(b); bus[b].push_back(a); } } for (int i = 1; i <= n; ++i) { if (!viz[i]) { bfs(i); ++k; } } for (int i = 0; i < k; ++i) { if (!s[i].empty()) { cnt[i] = s[i].size(); } } int maxi = 0; int ans = 0; for (int i = 0; i < k; ++i) { if (cnt[i] > maxi) { maxi = cnt[0]; ans = 1; } else if (cnt[i] == maxi) { ++ans; } } for (int i = 1; i <= n; ++i) { for (auto x : bus[i]) { for (int j = 0; j < k; ++j) { if (s[i].find(x) != s[i].end()) { if (cnt[i] + cnt[j] > maxi) { maxi = cnt[i] + cnt[j]; ans = 1; } else if (cnt[i] + cnt[j] == maxi) { ++ans; } } } } } cout << ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...