# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
109161 | 2019-05-05T06:23:50 Z | njchung99 | 전압 (JOI14_voltage) | C++14 | 167 ms | 14072 KB |
#include<cstdio> #include<algorithm> #include<vector> #include<cstring> #include<stack> using namespace std; int n, m; stack<int> st; pair<int, int> a[200010]; vector<vector<int>> vt; int par[100010]; int de[100010]; int visited[100010]; int used[100010]; int dp[100010]; int dp1[100010]; int dap = 0; int odd = 0; void dfs(int here) { st.push(here); visited[here] = 1; for (int i = 0; i < vt[here].size(); i++) { int id = vt[here][i]; int next = a[id].first^a[id].second^here; if (!visited[next]) { used[id] = 1; par[next] = here; de[next] = de[here] + 1; dfs(next); } } } int main() { scanf("%d %d", &n, &m); vt.resize(n + 1); for (int i = 0; i < m; i++) { int q, w; scanf("%d %d", &q, &w); vt[q].push_back(i); vt[w].push_back(i); a[i] = { q,w }; } for (int i = 1; i <= n; i++) { if(!visited[i]) dfs(i); } for (int i = 0; i < m; i++) { if (used[i])continue; int x = a[i].first; int y = a[i].second; if (de[x] < de[y]) swap(x, y); if (de[x] % 2 == de[y] % 2) { dp[x]++; dp[y]--; odd++; } else { dp1[x]++; dp1[y]--; } } if (odd == 1)dap++; while (st.size()) { int t = st.top(); int p = par[t]; st.pop(); if (par[t] && dp[t]==odd && dp1[t] == 0)dap++; dp[p] += dp[t]; dp1[p] += dp1[t]; } printf("%d\n", dap); }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 4 ms | 512 KB | Output is correct |
2 | Correct | 4 ms | 384 KB | Output is correct |
3 | Correct | 2 ms | 384 KB | Output is correct |
4 | Correct | 3 ms | 512 KB | Output is correct |
5 | Correct | 4 ms | 512 KB | Output is correct |
6 | Correct | 3 ms | 512 KB | Output is correct |
7 | Correct | 3 ms | 512 KB | Output is correct |
8 | Correct | 3 ms | 512 KB | Output is correct |
9 | Correct | 3 ms | 512 KB | Output is correct |
10 | Correct | 3 ms | 512 KB | Output is correct |
11 | Correct | 3 ms | 512 KB | Output is correct |
12 | Correct | 4 ms | 512 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 72 ms | 8944 KB | Output is correct |
2 | Correct | 167 ms | 12032 KB | Output is correct |
3 | Correct | 75 ms | 9028 KB | Output is correct |
4 | Correct | 157 ms | 13176 KB | Output is correct |
5 | Correct | 9 ms | 1536 KB | Output is correct |
6 | Correct | 136 ms | 10872 KB | Output is correct |
7 | Correct | 131 ms | 14072 KB | Output is correct |
8 | Correct | 100 ms | 13968 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 31 ms | 8944 KB | Output is correct |
2 | Correct | 48 ms | 13992 KB | Output is correct |
3 | Incorrect | 43 ms | 13992 KB | Output isn't correct |
4 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 59 ms | 10240 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |