Submission #540695

#TimeUsernameProblemLanguageResultExecution timeMemory
540695Vladth11Pipes (CEOI15_pipes)C++14
100 / 100
1058 ms14284 KiB
#include <iostream> #include <map> #include <vector> using namespace std; const int NMAX = 100001; vector <int> v[NMAX]; int root; int lvl[NMAX]; int parent[NMAX]; int parentB[NMAX]; int findR(int a){ if(parent[a] == a) return a; return parent[a] = findR(parent[a]); } int findRB(int a){ if(parentB[a] == a) return a; return parentB[a] = findRB(parentB[a]); } void unite(int a, int b){ a = findR(a); b = findR(b); parent[a] = b; } void uniteB(int a, int b){ a = findRB(a); b = findRB(b); parentB[a] = b; } map <int, int> dp; void DFS(int node, int p){ lvl[node] = lvl[p] + 1; for(auto x : v[node]){ if(lvl[x] == 0){ DFS(x, node); }else if(lvl[x] > lvl[node]){ dp[node]--; }else{ dp[node]++; } } if(node != root){ dp[node]--; } dp[p] += dp[node]; if(dp[node] == 0 && node != root){ cout << node << " " << p << "\n"; } dp.erase(node); } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n, m, i; cin >> n >> m; for(i = 1; i <= n; i++){ parent[i] = i; parentB[i] = i; } for(i = 1; i <= m; i++){ int a, b; cin >> a >> b; if(findR(a) != findR(b)){ v[a].push_back(b); v[b].push_back(a); unite(a, b); }else if(findRB(a) != findRB(b)){ v[a].push_back(b); v[b].push_back(a); uniteB(a, b); } } for(i = 1; i <= n; i++){ if(!lvl[i]){ root = i; DFS(root, 0); } } 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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...