Submission #959308

#TimeUsernameProblemLanguageResultExecution timeMemory
959308Cyber_WolfPipes (CEOI15_pipes)C++17
0 / 100
997 ms65536 KiB
#include <bits/stdc++.h> using namespace std; const int N = 1e5+5; vector<int> adj[N]; int tin[N], par[N][2], low[N]; int get1(int src) { return par[src][0] = (src == par[src][0] ? src : get1(par[src][0])); } int get2(int src) { return par[src][1] = (src == par[src][1] ? src : get2(par[src][1])); } int n, m, tmp, pa = -1, src, o; void dfs() { bool a = false; tin[src] = low[src] = ++tmp; for(auto it : adj[src]) { if(it == pa && !a) { a = true; continue; } if(tin[it]) { low[src] = min(low[src], tin[it]); continue; } o = pa; pa = src; src = it; dfs(); src = pa; pa = o; low[src] = min(low[src], low[it]); if(low[it] > tin[src]) { printf("%d %d\n", src, it); } } return ; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); scanf("%d%d", &n, &m); for(int i = 1; i <= n; i++) par[i][0] = par[i][1] = i; int u, v, pU, pV; while(m--) { scanf("%d%d", &u, &v); pU = get1(u), pV = get1(v); if(pU != pV) { par[pU][0] = pV; adj[u].push_back(v), adj[v].push_back(u); } else{ pU = get2(u), pV = get2(v); if(pU != pV) { par[pU][1] = pV; adj[u].push_back(v), adj[v].push_back(u); } } } for(int i = 1; i <= n; i++) { src = i; if(!tin[i]) dfs(); } return 0; }

Compilation message (stderr)

pipes.cpp: In function 'int main()':
pipes.cpp:58:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   58 |  scanf("%d%d", &n, &m);
      |  ~~~~~^~~~~~~~~~~~~~~~
pipes.cpp:63:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   63 |   scanf("%d%d", &u, &v);
      |   ~~~~~^~~~~~~~~~~~~~~~
#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...