# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
109156 | 2019-05-05T06:05:16 Z | njchung99 | 전압 (JOI14_voltage) | C++14 | 128 ms | 14148 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; if (de[a[i].first] < de[a[i].second]) swap(a[i].first, a[i].second); if (de[a[i].first] % 2 == de[a[i].second] % 2) { dp[a[i].first]++; dp[a[i].second]--; odd++; } else { dp1[a[i].first]++; dp1[a[i].second]--; } } if (odd == 1)dap++; while (st.size()) { int t = st.top(); int p = par[t]; st.pop(); if (par[t] && de[t] && dp1[t] == 0)dap++; dp[p] += dp[t]; dp1[p] += dp1[t]; } printf("%d\n", dap); }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 3 ms | 512 KB | Output is correct |
2 | Correct | 3 ms | 384 KB | Output is correct |
3 | Correct | 2 ms | 384 KB | Output is correct |
4 | Correct | 2 ms | 384 KB | Output is correct |
5 | Correct | 3 ms | 512 KB | Output is correct |
6 | Correct | 2 ms | 512 KB | Output is correct |
7 | Incorrect | 3 ms | 512 KB | Output isn't correct |
8 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 61 ms | 8948 KB | Output is correct |
2 | Correct | 128 ms | 12060 KB | Output is correct |
3 | Incorrect | 83 ms | 8912 KB | Output isn't correct |
4 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 41 ms | 9076 KB | Output is correct |
2 | Correct | 51 ms | 13980 KB | Output is correct |
3 | Incorrect | 55 ms | 14148 KB | Output isn't correct |
4 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 61 ms | 10204 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |