Submission #669015

#TimeUsernameProblemLanguageResultExecution timeMemory
669015radinr85Pipes (CEOI15_pipes)C++14
0 / 100
1029 ms35480 KiB
//radinr85 #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef deque<int> dq; typedef long double ld; typedef pair<int , int> pii; typedef priority_queue<int> pq; const int maxn = 3e6; const ll mod = 1e9+7; #define F first #define S second #define endl "\n" #define pb push_back #define ms(x , y) memset(x , y , sizeof x) ll pw(ll a, ll b, ll md = mod){ll res = 1;while(b){if(b&1){res=(a*res)%md;}a=(a*a)%md;b>>=1;}return(res);} const int N = 1e5 + 10; vector<int> ver[N]; vector<pii> ans; vector<pii> e; bool mark[N]; int par1[N]; int par2[N]; int par[N]; int sz1[N]; int sz2[N]; int cnt[N]; int h[N]; int n , m; int get_par(int u , bool x) { if(!x) return par1[u] == u ? u : par1[u] = get_par(par1[u] , 0); else return par2[u] == u ? u : par2[u] = get_par(par2[u] , 1); } bool merge(int u , int v , bool x) { u = get_par(u , x); v = get_par(v , x); if(u == v) return false; if(!x) { if(sz1[u] > sz1[v]) swap(u , v); sz1[v] += sz1[u]; par1[u] = v; } else { if(sz2[u] > sz2[v]) swap(u , v); sz2[v] += sz2[u]; par2[u] = v; } return true; } int DFS(int u) { mark[u] = true; for(auto v : ver[u]) { if(!mark[v]) { h[v] = h[u] + 1; par[v] = u; cnt[u] += DFS(v); } else if(h[u] - h[v] > 1) { cnt[u] ++; cnt[v] --; } } if(cnt[u] == 0) ans.pb({u , par[u]}); return cnt[u]; } int main() { cin.tie(0)->sync_with_stdio(0); cin >> n >> m; for(int i = 1 ; i <= n ; i ++) { sz1[i] = 1 , sz2[i] = 1; par1[i] = i , par2[i] = i; } for(int i = 0 ; i < m ; i ++) { int u , v; cin >> u >> v; if(merge(u , v , 0) || merge(u , v , 1)) e.pb({u , v}); } for(auto x : e) { ver[x.F].pb(x.S); ver[x.S].pb(x.F); } for(int i = 1 ; i <= n ; i ++) if(!mark[i]) DFS(i); for(auto x : ans) if(x.S != 0) cout << x.F << " " << x.S << endl; return 0; }

Compilation message (stderr)

pipes.cpp: In function 'int main()':
pipes.cpp:108:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
  108 |     for(auto x : ans)
      |     ^~~
pipes.cpp:112:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
  112 |  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...