제출 #1317522

#제출 시각아이디문제언어결과실행 시간메모리
1317522Jawad_Akbar_JJPipes (CEOI15_pipes)C++20
100 / 100
870 ms7788 KiB
#include <iostream> #include <vector> #include <bitset> #include <random> #include <chrono> using namespace std; const int N = 100005; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); vector<pair<int, int>> nei[N]; long long num[N]; int seen[N], Par[N]; int root(int v){ return (Par[v] == 0 ? v : Par[v] = root(Par[v])); } void dfs(int u, int p){ seen[u] = 1; for (auto [i, id] : nei[u]){ if (i == p) continue; dfs(i, u); if (num[i] == 0) cout<<i<<" "<<u<<'\n'; num[u] ^= num[i]; } } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n, m; cin>>n>>m; for (int i=1, a, b;i<=m;i++){ long long rnd = 1, mod = 1e9 + 7; for (int j=1;j<=10;j++) rnd = rnd % mod * rng(); cin>>a>>b; if (root(a) == root(b)){ num[a] ^= rnd; num[b] ^= rnd; } else{ Par[root(a)] = root(b); nei[a].push_back({b, i}); nei[b].push_back({a, i}); } } for (int i=1;i<=n;i++){ if (seen[i] == 0) dfs(i, 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...