제출 #95118

#제출 시각아이디문제언어결과실행 시간메모리
95118MrTEKPipes (CEOI15_pipes)C++14
100 / 100
1223 ms13360 KiB
#include <bits/stdc++.h> using namespace std; typedef long long int ll; typedef pair<int,int> ii; const int N = 1e5 + 5; int n,m,u,v,t,tin[N],fup[N]; vector <int> ed[N]; bool vis[N]; class dsu { public: int dad[N]; void init() { for (int i = 1 ; i <= n ; i++) dad[i] = i; } int find(int x) { if (x == dad[x]) return x; return dad[x] = find(dad[x]); } bool merge(int x,int y) { int dx = find(x) , dy = find(y); if (dx == dy) return false; dad[dx] = dy; return true; } }t1,t2; void is_bridge(int x,int y) { int l = lower_bound(ed[x].begin(),ed[x].end(),y) - ed[x].begin(); int r = upper_bound(ed[x].begin(),ed[x].end(),y) - ed[x].begin(); if (r != l + 1) return; cout << x << " " << y << endl; } void dfs(int cur,int par) { vis[cur] = true; tin[cur] = fup[cur] = ++t; for (auto i : ed[cur]) { if (i == par) continue; if (vis[i]) fup[cur] = min(fup[cur],tin[i]); else{ dfs(i,cur); fup[cur] = min(fup[cur],fup[i]); if (fup[i] > tin[cur]) is_bridge(cur,i); } } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n >> m; t1.init(); t2.init(); for (int i = 1 ; i <= m ; i++) { cin >> u >> v; if (t1.merge(u,v) || t2.merge(u,v)) { ed[u].push_back(v); ed[v].push_back(u); } } for (int i = 1 ; i <= n ; i++) sort(ed[i].begin(),ed[i].end()); for (int i = 1 ; i <= n ; i++) if (vis[i] == false) dfs(i,-1); }
#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...