Submission #386368

#TimeUsernameProblemLanguageResultExecution timeMemory
386368FatihSolakPipes (CEOI15_pipes)C++17
100 / 100
1347 ms14132 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<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); adj[tmp2].push_back(tmp1); return 1; } int n; vector<int> tin, low; int timer; void IS_BRIDGE(int v,int a){ cout << v << " " << a << endl; } void dfs(int v, int p = -1) { tin[v] = low[v] = timer++; for (int to : adj[v]) { if (to == p) continue; if (tin[to] != -1) { low[v] = min(low[v], tin[to]); } else { dfs(to, v); low[v] = min(low[v], low[to]); if (low[to] > tin[v] && find(v,1) != find(to,1)) IS_BRIDGE(v, to); } } } void find_bridges() { timer = 0; tin.assign(N, -1); low.assign(N, -1); for (int i = 1; i <= n; ++i) { if (tin[i] == -1) 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...