Submission #669372

#TimeUsernameProblemLanguageResultExecution timeMemory
669372ShaShiPipes (CEOI15_pipes)C++17
20 / 100
936 ms14144 KiB
#include <bits/stdc++.h> #define lint long long int #define dint long double #define ll long long #define endl "\n" #define pii pair<int, int> #define pb push_back #define F first #define S second using namespace std; const int MOD = (int)1e9 + 23; const int MAXN = (int)1e5 + 23; const int MAX_LOG = 17 + 1; const int INF = (int)1e9 + 23; int n, m, tmp, tmp2, u, v; int par1[MAXN], par2[MAXN], sz1[MAXN], sz2[MAXN], h[MAXN], dp[MAXN], seen[MAXN]; vector<int> adj[MAXN]; int get_par1(int v) { return (par1[v] == -1? v : par1[v] = get_par1(par1[v])); } int get_par2(int v) { return (par2[v] == -1? v : par2[v] = get_par2(par2[v])); } bool merge1(int u, int v) { u = get_par1(u); v = get_par1(v); if (u == v) return 0; par1[u] = v; return 1; } bool merge2(int u, int v) { u = get_par2(u); v = get_par2(v); if (u == v) return 0; par2[u] = v; return 1; } void DFS(int v, int par){ dp[v] = h[v]; seen[v] = 1; for(int u:adj[v]) { if(!seen[u]) { h[u] = h[v]+1; DFS(u,v); dp[v] = min(dp[v], dp[u]); } else if(u!=par){ dp[v] = min(dp[v], h[u]); } } if (par!=-1 && dp[v]==h[v]){ cout << par << " " << v << endl; } } int32_t main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n >> m; fill(par1, par1+n+1, -1); fill(par2, par2+n+1, -1); for (int i=1; i<=m; i++) { cin >> u >> v; if (merge1(u, v) || merge2(u, v)) { adj[u].pb(v); adj[v].pb(u); } } for (int i=1; i<=n; i++) { if (!seen[i]) { DFS(i, -1); } } 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...