Submission #874357

#TimeUsernameProblemLanguageResultExecution timeMemory
874357AHOKAPipes (CEOI15_pipes)C++14
0 / 100
2698 ms51424 KiB
#pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2") #include <bits/stdc++.h> using namespace std; #define threesum cin.tie(NULL); cout.tie(NULL); ios_base::sync_with_stdio(false); #define all(a) a.begin(), a.end() #define lmx 9223372036854775807; //#define mod 1000000007 #define F first #define S second vector<int> adj[100010]; int par[100010], par2[100010], sz[100010], n, m, mxsz, cnt, seen[100010], d[100010]; int getpar(int v){ return ((par[v]!=v) ? par[v] = getpar(par[v]) : v); } int getpar2(int v){ return ((par2[v]!=v) ? par2[v] = getpar2(par2[v]) : v); } bool merge(int u, int v){ int u1 = getpar(u), v1 = getpar(v); if(u1 == v1){ int u2 = getpar2(u), v2 = getpar2(v); if(u2 == v2) return 0; par2[u2] = v2; return 1; } par[u1] = v1; return 1; } void dfs(int v, int p){ seen[v]=seen[p]+1; d[v]=seen[v]; for(auto u:adj[v]){ if(u==p)continue; if(!seen[u])dfs(u, v); d[v]=min(d[v], d[u]); } if(d[v]==seen[v]&&p!=0)cout << v << " " << p << "\n"; } int main() { cin >> n >> m; for(int i=1;i<=n;i++)par[i]=i, par2[i]=i; for(int i=0;i<m;i++){ int u, v;cin >> v >> u; if(merge(u, v))adj[v].push_back(u), adj[u].push_back(v); } for(int i=1;i<=n;i++)if(!seen[i])dfs(i, 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...