Submission #1021646

#TimeUsernameProblemLanguageResultExecution timeMemory
1021646idiotcomputerPipes (CEOI15_pipes)C++11
20 / 100
1148 ms65536 KiB
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define sz size 

const int mxN = 1e5;
vector<int> adj[mxN];
int d[mxN];
int low[mxN];

void dfs(int c, int depth, int p){
	d[c] = depth;
	low[c] = d[c];
	int op = p;
	for (int i : adj[c]){
		if (i == p){p = -1; continue;}
		if (d[i] != -1){ low[c] = min(low[c],d[i]); continue;}
		dfs(i,depth+1,c);
		low[c] = min(low[c], low[i]);
	}
	if (low[c] >= depth && op != -1) cout << c+1 << " " << op+1 << '\n';
}

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);

	int n,m;
	cin >> n >> m;
	int a,b;
	for (int i = 0; i < m; i++){
		cin >> a >> b;
		a -= 1;
		b -= 1;
		adj[a].pb(b);
		adj[b].pb(a);
	}
	for (int i = 0; i < n; i++) d[i] = -1;
	for (int i = 0; i < n; i++) if (d[i] == -1) dfs(i,0,-1);
	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...