#include<bits/stdc++.h>
#define STIZE(x) fprintf(stderr, "STIZE%d\n", x);
#define PRINT(x) fprintf(stderr, "%s = %d\n", #x, x);
#define NL(x) printf("%c", " \n"[(x)]);
#define lld long long
#define pii pair<int,int>
#define pb push_back
#define fi first
#define se second
#define mid (l+r)/2
#define endl '\n'
#define all(a) begin(a),end(a)
#define sz(a) int((a).size())
#define LINF 1000000000000000LL
#define INF 1000000000
#define EPS 1e-9
using namespace std;
#define MAXN 30010
vector<unsigned short> adj[MAXN];
int dsu[MAXN], fup[MAXN], in[MAXN], out[MAXN], timer = 0;
bool pos[MAXN];
set<pii> e;
int root(int x) {
while(x != dsu[x]) {
dsu[x] = dsu[dsu[x]];
x = dsu[x];
}
return x;
}
void build(int node, int prev) {
pos[node] = 1;
in[node] = fup[node] = ++timer;
for(auto x : adj[node]) {
if(x != prev && !pos[x]) build(x, node), e.insert({node, x});;
}
out[node] = ++timer;
}
bool inSubtree(int x, int y) { //da li je y u subtree x
return (in[x] < in[y] && out[x] > out[y]);
}
bool backEdge(int x, int y) {
if(e.count({x, y}) == 1) return 0;
if(!inSubtree(x, y)) return 0;
if(root(x) != root(y)) return 0;
return 1;
}
int build1(int node, int prev) {
pos[node] = 1;
for(auto x : adj[node]) {
if(x != prev && !pos[x]) {
fup[node] = min(fup[node], build1(x, node));
}
if(fup[x] > in[node]) {
//printf("%d %d\n", fup[x], in[node]);
printf("%d %d\n", node, x);
}
}
return fup[node];
}
int main() {
int n, m; scanf("%d%d", &n, &m);
for(int i = 1; i <= n; i++) dsu[i] = i;
STIZE(1);
for(int i = 0; i < m; i++) {
unsigned short x, y; scanf("%hu%hu", &x, &y);
STIZE(3);
adj[x].pb(y);
adj[y].pb(x);
STIZE(2);
if(root(x) != root(y)) {
dsu[root(x)] = root(y);
}
}
STIZE(4);
for(int i = 1; i <= n; i++) if(!pos[i]) build(i, i);
STIZE(5);
for(int i = 1; i <= n; i++) {
for(auto x : adj[i]) {
if(backEdge(x, i)) {
fup[i] = min(fup[i], in[x]);
} else if(backEdge(i, x)) {
fup[x] = min(in[i], fup[x]);
}
}
}
for(int i = 1; i <= n; i++) pos[i] = 0;
for(int i = 1; i <= n; i++) if(!pos[i]) build1(i, i);
return 0;
}
Compilation message
pipes.cpp: In function 'int main()':
pipes.cpp:62:20: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
int n, m; scanf("%d%d", &n, &m);
~~~~~^~~~~~~~~~~~~~~~
pipes.cpp:66:35: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
unsigned short x, y; scanf("%hu%hu", &x, &y);
~~~~~^~~~~~~~~~~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
3 ms |
1024 KB |
Expected integer, but "STIZE1" found |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
41 ms |
1912 KB |
Expected integer, but "STIZE1" found |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
2017 ms |
13624 KB |
Expected integer, but "STIZE1" found |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
3651 ms |
21364 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 |
Execution timed out |
5047 ms |
31536 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
4 ms |
2176 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
4 ms |
2148 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
4 ms |
2176 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
3 ms |
2176 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
4 ms |
2048 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |