답안 #230179

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
230179 2020-05-09T00:43:18 Z alishahali1382 Pipes (CEOI15_pipes) C++14
70 / 100
1569 ms 20472 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];
bool mark[MAXN];
vector<pii> G[MAXN], backe[MAXN];

int dfs(int node, int par, int parid){
	//debug2(node, par)
	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});
			//debug2(u, v);
		}/*
		else if (dsu2.join(u, v)){
			backe[u].pb(v);
			backe[v].pb(u);
		}*/
	}
	for (int i=1; i<=n; i++) if (!h[i]) dfs(i, 0, -1);
	
	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 7 ms 5888 KB Output is correct
2 Correct 8 ms 5760 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 12 ms 6528 KB Output is correct
2 Correct 12 ms 6144 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 115 ms 9464 KB Output is correct
2 Correct 118 ms 9212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 195 ms 10104 KB Output is correct
2 Correct 225 ms 8696 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 334 ms 11772 KB Output is correct
2 Correct 298 ms 10360 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 502 ms 14572 KB Output is correct
2 Correct 459 ms 11000 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 812 ms 15880 KB Output is correct
2 Correct 713 ms 12280 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1030 ms 18168 KB Memory limit exceeded (if you are sure your verdict is not MLE, please contact us)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1308 ms 20472 KB Memory limit exceeded (if you are sure your verdict is not MLE, please contact us)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1569 ms 17724 KB Memory limit exceeded (if you are sure your verdict is not MLE, please contact us)
2 Halted 0 ms 0 KB -