Submission #1266156

#TimeUsernameProblemLanguageResultExecution timeMemory
1266156PlayVoltzPipes (CEOI15_pipes)C++20
30 / 100
1662 ms94448 KiB
#include <bits/stdc++.h>
using namespace std;

#define pii pair<int, int>
#define mp make_pair
#define pb push_back

int counter=0;
vector<vector<int> > graph;
vector<int> low, disc;

void dfs(int node, int par){
	disc[node]=low[node]=counter++;
	bool done=false;
	for (auto num:graph[node]){
		if (disc[num]==-1){
			dfs(num, node);
			low[node]=min(low[node], low[num]);
			if (low[num]>disc[node])cout<<node+1<<" "<<num+1<<"\n";
		}
		else if (num==par && !done)done=1;
		else low[node]=min(low[node], disc[num]);
	}
}

int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int n, m, a, b;
	cin>>n>>m;
	graph.resize(n);
	disc.resize(n, -1);
	low.resize(n);
	while (m--){
		cin>>a>>b;--a;--b;
		graph[a].pb(b);
		graph[b].pb(a);
	}
	for (int i=0; i<n; ++i)if (disc[i]==-1)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...