Submission #74746

#TimeUsernameProblemLanguageResultExecution timeMemory
74746shoemakerjoPotemkin cycle (CEOI15_indcyc)C++14
20 / 100
22 ms5796 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pii pair<int, int> const int maxn = 100010; int N, M; const int mod = 1000000007; int nums[maxn]; vector<int> adj[maxn]; int par[maxn]; int findset(int a) { if (par[a] == a) return a; return par[a] = findset(par[a]); } void unionset(int a, int b) { a = findset(a); b = findset(b); if (a == b) return; if (rand() % 2) { par[a] = b; } else par[b] = a; } bool vis[maxn]; // int val; void dfs(int u, int p) { vis[u] = true; for (int val : adj[u]) { if (val != p) { dfs(val, u); nums[u] = (nums[val]+nums[u])%mod; } } if (nums[u] == 0 && p != -1) { cout << u << " " << p << endl; } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> N >> M; for (int i = 1; i <= N; i++) par[i] = i; srand(23); //want deterministic for now int x, y; int cur; for (int i = 0; i < M; i++) { cin >> x >> y; if (findset(x) != findset(y)) { adj[x].push_back(y); adj[y].push_back(x); unionset(x, y); } else { cur = rand()%mod; nums[x] += cur + 0LL; nums[y] += mod-cur + 0LL; nums[x]%=mod; nums[y]%=mod; } } for (int i = 1; i <= N; i++) { if (!vis[i]) dfs(i, -1); } }
#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...