제출 #550203

#제출 시각아이디문제언어결과실행 시간메모리
550203leakedPipes (CEOI15_pipes)C++17
60 / 100
1215 ms52532 KiB
#include <bits/stdc++.h> #define f first #define s second #define m_p make_pair #define vec vector #define pb push_back #define all(x) (x).begin(),(x).end() #define rall(x) (x).rbegin(),(x).rend() #define pw(x) (1LL<<(x)) #define sz(x) (int)(x).size() using namespace std; typedef long long ll; typedef pair<int,int> pii; template<class T> bool umin(T &a,const T &b){return (a>b?a=b,1:0);} template<class T> bool umax(T &a,const T &b){return (a<b?a=b,1:0);} const int N=1e5+1; vec<pii> g[N]; int fup[N],in[N],tt=2; struct dsu{ int p[N]; dsu(){ iota(p,p+N,0); } int get(int v){ return p[v]=(p[v]==v?v:get(p[v])); } bool mg(int a,int b){ a=get(a),b=get(b); if(a==b) return 0; p[a]=b; return 1; } }x,y; void dfs(int v,int p){ fup[v]=in[v]=tt++; for(auto &z : g[v]){ if(z.s==p) continue; if(in[z.f]) fup[v]=(fup[v]<in[z.f]?fup[v]:in[z.f]); else{ dfs(z.f,z.s); fup[v]=(fup[v]<fup[z.f]?fup[v]:fup[z.f]); if(fup[z.f]>in[v]){ cout<<v+1<<' '<<z.f+1<<'\n'; } } } } signed main(){ ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); int n,m; int v,u; cin>>n>>m; for(int i=0;i<m;i++){ cin>>v>>u;--v;--u; if(x.mg(v,u) || y.mg(v,u)){ g[v].pb({u,i});g[u].pb({v,i}); } } for(int i=0;i<n;i++){ if(!in[i]) dfs(i,i); } 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...