Submission #1054340

#TimeUsernameProblemLanguageResultExecution timeMemory
1054340vjudge1Pipes (CEOI15_pipes)C++14
50 / 100
880 ms65536 KiB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define sort undefined_function // To use stable_sort instead sort 
#define bpc __builtin_popcount
#define ull unsigned long long
#define ld double
#define ll long long
#define mp make_pair
#define F first
#define S second
 
using namespace std;

#define short unsigned short
 
vector<short> tin, low;
vector<vector<short>> g;
 
short timer = 0;
 
void dfs(short x, short prt = 0) {
	tin[x] = low[x] = ++timer;
	bool ok = 0;
 
	for (auto &y : g[x]) {
		if (y == prt && !ok) {
			ok = 1;
			continue;
		}
		
		if (tin[y] == 0) {
			dfs(y, x);
			low[x] = min(low[x], low[y]);
		} else {
			low[x] = min(low[x], tin[y]);
		}
 
		if (low[y] > tin[x])
			cout << x << " " << y << "\n";
	}
}
 
int32_t main() {
        ios_base::sync_with_stdio(0);
        cin.tie(0);
 
	int n, m;
	cin >> n >> m;
 
	g.resize(n + 1);
	tin.resize(n + 1);
	low.resize(n + 1);
 
	for (int i = 1; i <= m; i ++) {
		int a, b;
		cin >> a >> b;
 
		g[a].push_back(b);
		g[b].push_back(a);
	}
 
	for (int i = 1; i <= n; i ++) {
		if (tin[i] == 0) 
			dfs(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...