Submission #1258618

#TimeUsernameProblemLanguageResultExecution timeMemory
1258618chikien2009Pipes (CEOI15_pipes)C++20
80 / 100
584 ms21564 KiB
#include <bits/stdc++.h> using namespace std; void setup() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); } struct DSU { int par[100000], sz[100000]; inline DSU() { for (int i = 0; i < 1e5; ++i) { par[i] = i; sz[i] = 1; } } inline int Get(int inp) { return (inp == par[inp] ? inp : par[inp] = Get(par[inp])); } inline bool Combine(int ina, int inb) { ina = Get(ina); inb = Get(inb); if (ina != inb) { if (sz[ina] < sz[inb]) { swap(ina, inb); } sz[ina] += sz[inb]; par[inb] = ina; return true; } return false; } } dsu1, dsu2; int n, m, a, b, c, d = 0; int head[100000], near[100000]; bool check[200000]; vector<pair<int, int>> g[100000]; inline void DFS(int node) { head[node] = near[node] = a++; for (auto & i : g[node]) { if (!check[i.second]) { check[i.second] = true; if (head[i.first] == 0) { DFS(i.first); if (near[i.first] > head[node]) { cout << i.first + 1 << " " << node + 1 << "\n"; } } near[node] = min(near[node], near[i.first]); } } } int main() { setup(); cin >> n >> m; while (m--) { cin >> a >> b; a--; b--; c = 0; if (dsu1.Get(a) != dsu1.Get(b)) { c += dsu1.Combine(a, b); } else { c += dsu2.Combine(a, b); } if (c > 0) { g[a].push_back({b, d}); g[b].push_back({a, d++}); } } for (int i = 0; i < n; ++i) { if (head[i] == 0) { a = 1; DFS(i); } } return 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...