# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1028130 | 2024-07-19T14:10:00 Z | qwewq | Pipes (CEOI15_pipes) | C++14 | 665 ms | 13192 KB |
#include <bits/stdc++.h> #define ll long long using namespace std; const int N = 1e5; vector < int > adj[N + 2]; struct dsu{ int par[N + 2]; int find_par(const int &u){ if(par[u] < 0)return u; par[u] = find_par(par[u]); return par[u]; } bool union_set(int u , int v){ u = find_par(u); v = find_par(v); if(u != v){ if(par[u] > par[v])swap(u , v); par[u] += par[v]; par[v] = u; return true; } return false; } } par1 , par2; int timer = 0; int n , m; void dfs(int c, int depth, int par){ par1.par[c] = depth; par2.par[c] = par1.par[c]; int op = par; for (int i : adj[c]){ if (i == par){par = -1; continue;} if (par1.par[i] != -1){ par2.par[c] = min( par2.par[c] ,par1.par[i]); continue;} dfs(i,depth+1,c); par2.par[c] = min(par2.par[c] , par2.par[i]); } if (par2.par[c] >= depth && op != -1) cout << c << " " << op << '\n'; } void solve() { cin >> n >> m; for(int i = 1; i <= n; i++){ par1.par[i] = par2.par[i] = -1; } for(int i = 1; i <= m ;i ++){ int u , v; cin >> u >> v; if(par1.union_set(u , v)){ adj[u].push_back(v); adj[v].push_back(u); // cout << u << ' ' << v<< '\n'; } else if(par2.union_set(u , v)){ adj[u].push_back(v); adj[v].push_back(u); // cout << u << ' '<< v << '\n'; } } for(int i = 1; i <= n ; i ++){ par1.par[i] = par2.par[i] = -1; } for(int i = 1; i <= n ; i++){ if(par1.par[i] == -1)dfs(i , 0 , -1); } } signed main() { ios::sync_with_stdio(0), cin.tie(0); #define _ "maxseq." if (fopen(_ "inp", "r")) { freopen(_ "inp", "r", stdin); freopen(_ "out", "w", stdout); } solve(); }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 2652 KB | Output is correct |
2 | Correct | 1 ms | 2652 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 3 ms | 3160 KB | Output is correct |
2 | Correct | 3 ms | 2976 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 55 ms | 2964 KB | Output is correct |
2 | Correct | 58 ms | 2908 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 124 ms | 3664 KB | Output is correct |
2 | Correct | 110 ms | 3244 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 155 ms | 5208 KB | Output is correct |
2 | Correct | 131 ms | 4772 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 221 ms | 10068 KB | Output is correct |
2 | Correct | 232 ms | 6808 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 327 ms | 11344 KB | Output is correct |
2 | Correct | 346 ms | 8600 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 449 ms | 13072 KB | Output is correct |
2 | Correct | 431 ms | 8268 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 548 ms | 13192 KB | Output is correct |
2 | Correct | 517 ms | 8324 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 665 ms | 12888 KB | Output is correct |
2 | Correct | 615 ms | 9812 KB | Output is correct |