Submission #959106

#TimeUsernameProblemLanguageResultExecution timeMemory
959106Cyber_WolfPipes (CEOI15_pipes)C++17
50 / 100
802 ms65536 KiB
#include <bits/stdc++.h> using namespace std; #define fastio ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); const int N = 1e5+5; vector<int> adj[N]; int n, m, tin[N], tmp, par[2][N]; int get(int src, int t) { if(src == par[t][src]) return src; return par[t][src] = get(par[t][src], t); } bool join(int u, int v, int t) { u = get(u, t), v = get(v, t); if(u == v) return false; par[t][u] = v; return true; } int dfs(int src, int pa = -1) { int low, idx = 0; tin[src] = low = ++tmp; for(auto it : adj[src]) { if(it == pa) { idx++; continue; } if(tin[it]) { low = min(low, tin[it]); idx++; continue; } int low_it = dfs(it, src); low = min(low, low_it); if(idx && adj[src][idx-1] == it) { idx++; continue; } if(idx+1 < adj[src].size() && adj[src][idx+1] == it) { idx++; continue; } if(low_it > tin[src]) { cout << src << ' ' << it << endl; } idx++; } return low; } int main() { fastio; cin >> n >> m; for(int i = 1; i <= n; i++) par[0][i] = par[1][i] = i; for(int i = 0; i < m; i++) { int u, v; cin >> u >> v; if(join(u, v, 0) || join(u, v, 1)) { adj[u].push_back(v), adj[v].push_back(u); } } for(int i = 1; i <= n; i++) sort(adj[i].begin(), adj[i].end()); for(int i = 1; i <= n; i++) { if(!tin[i]) dfs(i); } return 0; }

Compilation message (stderr)

pipes.cpp: In function 'int dfs(int, int)':
pipes.cpp:50:12: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   50 |   if(idx+1 < adj[src].size() && adj[src][idx+1] == it)
      |      ~~~~~~^~~~~~~~~~~~~~~~~
#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...