Submission #156140

#TimeUsernameProblemLanguageResultExecution timeMemory
156140Flying_dragon_02전압 (JOI14_voltage)C++14
55 / 100
1046 ms39988 KiB
#include <bits/stdc++.h> using namespace std; #define fi first #define se second #define pb push_back #define mp make_pair typedef pair<int, int> ii; const int mod = 1e9 + 7; const int inf = 1e9; int add(int x, int y) { return (1ll * x + 1ll * y) % mod; } int del(int x, int y) { return ((1ll * x - 1ll * y) % mod + mod) % mod; } int mul(int x, int y) { return (1ll * x * 1ll * y) % mod; } const int N = 1e5 + 5; int n, m, bad[N], badEdge, ans, parity[N], dist[N], low[N]; vector<int> graph[N]; bool vis[N]; int cnt; map<ii, int> mymap; void dfs(int u, int p) { dist[u] = low[u] = ++cnt; vis[u] = 1; parity[u] = parity[p] ^ 1; for(int i = 0; i < graph[u].size(); i++) { int v = graph[u][i]; if(!vis[v]) { dfs(v, u); bad[u] += bad[v]; low[u] = min(low[u], low[v]); } else { if(parity[v] == parity[u]) { if(dist[v] < dist[u]) { bad[v]--; bad[u]++; badEdge++; } } else { if(v == p && mymap[{u, v}] >= 2) low[u] = min(low[u], dist[v]); else if(v != p) low[u] = min(low[u], dist[v]); } } } } void bfs(int u, int p) { vis[u] = 1; for(int i = 0; i < graph[u].size(); i++) { int v = graph[u][i]; if(v == p) continue; if(!vis[v]) { bfs(v, u); if(bad[v] == badEdge && low[v] > dist[u]) ans++; } } } int main() { cin.tie(0), ios_base::sync_with_stdio(0); cin >> n >> m; for(int i = 1; i <= m; i++) { int u, v; cin >> u >> v; graph[u].pb(v); mymap[{u, v}]++; mymap[{v, u}]++; graph[v].pb(u); } for(int i = 1; i <= n; i++) { if(!vis[i]) dfs(i, i); } if(badEdge == 1) ans++; memset(vis, 0, sizeof(vis)); for(int i = 1; i <= n; i++) { if(!vis[i]) bfs(i, i); } cout << ans; }

Compilation message (stderr)

voltage.cpp: In function 'void dfs(int, int)':
voltage.cpp:44:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0; i < graph[u].size(); i++) {
                    ~~^~~~~~~~~~~~~~~~~
voltage.cpp: In function 'void bfs(int, int)':
voltage.cpp:71:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0; i < graph[u].size(); i++) {
                    ~~^~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...