Submission #230180

# Submission time Handle Problem Language Result Execution time Memory
230180 2020-05-09T00:44:17 Z alishahali1382 Pipes (CEOI15_pipes) C++14
100 / 100
1485 ms 15836 KB
#include <bits/stdc++.h>
#pragma GCC optimize ("O2")
#pragma GCC optimize ("unroll-loops")
//#pragma GCC optimize("no-stack-protector,fast-math")

using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<pii, int> piii;
typedef pair<ll, ll> pll;
#define debug(x) cerr<<#x<<'='<<(x)<<endl;
#define debugp(x) cerr<<#x<<"= {"<<(x.first)<<", "<<(x.second)<<"}"<<endl;
#define debug2(x, y) cerr<<"{"<<#x<<", "<<#y<<"} = {"<<(x)<<", "<<(y)<<"}"<<endl;
#define debugv(v) {cerr<<#v<<" : ";for (auto x:v) cerr<<x<<' ';cerr<<endl;}
#define all(x) x.begin(), x.end()
#define pb push_back
#define kill(x) return cout<<x<<'\n', 0;

const ld eps=1e-7;
const int inf=1000000010;
const ll INF=10000000000000010LL;
const int mod=1000000007;
const int MAXN=100010, LOG=20;

struct DSU{
	int par[MAXN];
	DSU(){
		iota(par, par+MAXN, 0);
	}
	int get(int x){
		if (par[x]==x) return x;
		return par[x]=get(par[x]);
	}
	int join(int x, int y){
		x=get(x);
		y=get(y);
		par[x]=y;
		return x!=y;
	}
} dsu1, dsu2;

int n, m, k, u, v, x, y, t, a, b, ans;
int h[MAXN];
vector<pii> G[MAXN];

int dfs(int node, int par, int parid){
	int res=h[node]=h[par]+1;
	for (pii p:G[node]) if (p.second!=parid){
		if (!h[p.first]) res=min(res, dfs(p.first, node, p.second));
		else res=min(res, h[p.first]);
	}
	if (res>=h[node] && par) cout<<node<<' '<<par<<endl;
	return res;
}

int main(){
	ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	//freopen("input.txt", "r", stdin);
	//freopen("output.txt", "w", stdout);
	cin>>n>>m;
	while (m--){
		cin>>u>>v;
		if (dsu1.join(u, v) || dsu2.join(u, v)){
			G[u].pb({v, m});
			G[v].pb({u, m});
		}
	}
	for (int i=1; i<=n; i++) if (!h[i]) dfs(i, 0, -1);
	
	return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 8 ms 3456 KB Output is correct
2 Correct 6 ms 3456 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 11 ms 4096 KB Output is correct
2 Correct 10 ms 3840 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 115 ms 4088 KB Output is correct
2 Correct 108 ms 3840 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 189 ms 4856 KB Output is correct
2 Correct 218 ms 4344 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 321 ms 6488 KB Output is correct
2 Correct 297 ms 5904 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 474 ms 12152 KB Output is correct
2 Correct 437 ms 8580 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 757 ms 13432 KB Output is correct
2 Correct 698 ms 9896 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 991 ms 15836 KB Output is correct
2 Correct 934 ms 11000 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1186 ms 15736 KB Output is correct
2 Correct 1183 ms 11088 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1485 ms 15144 KB Output is correct
2 Correct 1371 ms 13636 KB Output is correct