Submission #64461

#TimeUsernameProblemLanguageResultExecution timeMemory
64461zubec낙하산 고리들 (IOI12_rings)C++14
0 / 100
4029 ms44772 KiB
#include <bits/stdc++.h> //#include "grader.h" using namespace std; const int N = 1000100; vector<int> g[N]; int tin[N], fup[N], tim, ans, n; bool used[N]; void dfs(int v, int p){ tin[v] = fup[v] = ++tim; int children = 0; bool isCutpoint = 0; for (int i = 0; i < g[v].size(); i++){ int to = g[v][i]; if (to == p) continue; if (used[to]){ fup[v] = min(fup[v], tin[to]); } else { dfs(to, v); ++children; fup[v] = min(fup[v], fup[to]); if (tin[v] <= fup[to] && p != -1 && !isCutpoint){ ++ans; isCutpoint = 0; } } } if (p == -1 && children > 1){ ++ans; } } void Init(int n){ ::n = n; for (int i = 1; i <= n; i++) g[i].clear(); } void Link(int a, int b){ ++a; ++b; g[a].push_back(b); g[b].push_back(a); } int CountCritical(){ for (int i = 1; i <= n; i++){ used[i] = tin[i] = fup[i] = 0; } tim = 0; ans = 0; for (int i = 1; i <= n; i++){ if (!used[i]) dfs(i, 0); } return ans; }

Compilation message (stderr)

rings.cpp: In function 'void dfs(int, int)':
rings.cpp:17:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < g[v].size(); i++){
                     ~~^~~~~~~~~~~~~
rings.cpp: In function 'int CountCritical()':
rings.cpp:56:26: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
         used[i] = tin[i] = fup[i] = 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...