제출 #1212324

#제출 시각아이디문제언어결과실행 시간메모리
1212324Double_SlashPipes (CEOI15_pipes)C++20
0 / 100
2686 ms93564 KiB
#include <bits/stdc++.h>
 
using namespace std;
 
int n, m, depth[100001] = {0}, ps[100001] = {0}, par[100001] = {0};
vector<int> adj[100001];
bool seen[100001];
 
void dfs(int i) {
    seen[i] = true;
    for (int j: adj[i]) {
        if (j == par[i]) continue;
        if (par[j] == i) par[j] = -1;
        if (par[j] == -1) continue;
        if (seen[j]) {
            if (depth[j] > depth[i]) continue;
            ps[i]++;
            ps[j]--;
        } else {
            depth[j] = depth[i] + 1;
            par[j] = i;
            dfs(j);
            ps[i] += ps[j];
        }
    }
}
 
int main() {
    cin >> n >> m;
    for (int i = 0; i < m; ++i) {
        int a, b;
        cin >> a >> b;
        adj[a].emplace_back(b);
        adj[b].emplace_back(a);
    }
    for (int i = 1; i <= n; ++i) {
        if (not seen[i]) dfs(i);
    }
    for (int i = 1; i <= n; ++i) {
        if (not ps[i] and ~par[i]) cout << i << " " << par[i] << "\n";
    }
}
#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...