Submission #386362

#TimeUsernameProblemLanguageResultExecution timeMemory
386362FatihSolakPipes (CEOI15_pipes)C++17
10 / 100
1352 ms65536 KiB
#include <bits/stdc++.h> #define N 100005 using namespace std; int par[N][2]; int find(int a,int val){ if(par[a][val] == a)return a; return par[a][val] = find(par[a][val],val); } vector<pair<int,int>> adj[N]; bool merge(int a,int b,int val){ int tmp1 = a,tmp2 = b; a = find(a,val); b = find(b,val); if(a == b)return 0; par[a][val] = b; adj[tmp1].push_back({tmp2,val}); adj[tmp2].push_back({tmp1,val}); return 1; } int n; vector<bool> visited; vector<int> tin, low; int timer; void IS_BRIDGE(int v,int a){ cout << v << " " << a << endl; } void dfs(int v, int p = -1) { visited[v] = true; tin[v] = low[v] = timer++; for (auto x : adj[v]) { int to = x.first; if (to == p) continue; if (visited[to]) { low[v] = min(low[v], tin[to]); } else { dfs(to, v); low[v] = min(low[v], low[to]); if (low[to] > tin[v] && !x.second) IS_BRIDGE(v, to); } } } void find_bridges() { timer = 0; visited.assign(N, false); tin.assign(N, -1); low.assign(N, -1); for (int i = 1; i <= n; ++i) { if (!visited[i]) dfs(i); } } void solve(){ int m; cin >> n >> m; for(int i=1;i<=n;i++){ par[i][0] = par[i][1] = i; } int l,r; for(int i=1;i<=m;i++){ cin >> l >> r; if(!merge(l,r,0)) merge(l,r,1); } find_bridges(); } int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); #ifdef Local freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); #endif int t=1; //cin>>t; while(t--){ solve(); } #ifdef Local cout<<endl<<fixed<<setprecision(2)<<1000.0 * clock() / CLOCKS_PER_SEC<< " milliseconds "; #endif }
#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...