# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1035143 | 2024-07-26T05:15:34 Z | vjudge1 | Pipes (CEOI15_pipes) | C++14 | 871 ms | 65536 KB |
#include <iostream> #include <vector> #include <stdio.h> #include <algorithm> #define MAX_N 100000 using namespace std; int N, M; vector<int> gp[MAX_N+1]; int g1[MAX_N+1], g2[MAX_N+1]; int up[MAX_N+1], lv[MAX_N+1], p[MAX_N+1]; void init(){ for(int i=1; i<=N; i++) g1[i] = g2[i] = i; } int find_g1(int x){ if(x==g1[x]) return x; return g1[x] = find_g1(g1[x]); } int find_g2(int x){ if(x==g2[x]) return x; return g2[x] = find_g2(g2[x]); } void union_g1(int x, int y){ x = find_g1(x); y = find_g1(y); g1[x] = y; } void union_g2(int x, int y){ x = find_g2(x); y = find_g2(y); g2[x] = y; } bool vst[MAX_N+1]; void dfs(int x){ bool tf = true; up[x] = lv[x]; vst[x] = true; for(int i=0; i<gp[x].size(); i++){ if(gp[x][i]==p[x] && tf){ tf = false; continue; } if(vst[gp[x][i]]){ up[x] = min(up[x], lv[gp[x][i]]); }else{ p[gp[x][i]] = x; lv[gp[x][i]] = lv[x]+1; dfs(gp[x][i]); if(up[gp[x][i]]>lv[x]){ printf("%d %d\n", gp[x][i], x); } up[x] = min(up[x], up[gp[x][i]]); } } } int main(){ scanf("%d %d", &N, &M); init(); int a, b; while(M--){ scanf("%d%d", &a, &b); if(find_g1(a)!=find_g1(b)){ union_g1(a, b); gp[a].push_back(b); gp[b].push_back(a); } else if(find_g2(a)!=find_g2(b)){ union_g2(a, b); gp[a].push_back(b); gp[b].push_back(a); } } for(int i=1; i<=N; i++){ if(!vst[i]){ lv[i] = 1; dfs(i); } } return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 2648 KB | Output is correct |
2 | Correct | 1 ms | 2652 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 4 ms | 3160 KB | Output is correct |
2 | Correct | 3 ms | 2908 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 70 ms | 2964 KB | Output is correct |
2 | Correct | 69 ms | 2940 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 121 ms | 3668 KB | Output is correct |
2 | Correct | 126 ms | 3412 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 189 ms | 5200 KB | Output is correct |
2 | Correct | 168 ms | 15976 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 303 ms | 10324 KB | Output is correct |
2 | Runtime error | 260 ms | 23560 KB | Memory limit exceeded |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 429 ms | 11348 KB | Output is correct |
2 | Runtime error | 491 ms | 38608 KB | Memory limit exceeded |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 550 ms | 13396 KB | Output is correct |
2 | Runtime error | 548 ms | 46088 KB | Memory limit exceeded |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 728 ms | 13400 KB | Output is correct |
2 | Runtime error | 767 ms | 55968 KB | Memory limit exceeded |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 816 ms | 12940 KB | Output is correct |
2 | Runtime error | 871 ms | 65536 KB | Memory limit exceeded |
3 | Halted | 0 ms | 0 KB | - |