# | 제출 시각UTC-0 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1141139 | byunjaewoo | 도로 폐쇄 (APIO21_roads) | C++20 | 308 ms | 69576 KiB |
#include "roads.h"
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
const int N=100010;
int n, deg[N], par[N], pw[N];
ll dp[N], ep[N];
bool chk[N];
vector<int> v[N], c;
vector<pair<int, int>> st1[N], st2[N];
vector<pair<int, int>> adj[N], adj2[N];
ll sum1[N], sum2[N];
set<pair<int, int>> s1[N], s2[N];
vector<ll> ans;
void dfs0(int curr, int prev) {
for(auto [next, w]:adj[curr]) if(next!=prev) par[next]=curr, pw[next]=w, st1[curr].push_back({w, next}), dfs0(next, curr);
sort(st1[curr].rbegin(), st1[curr].rend());
st2[curr]=st1[curr];
}
void dfs(int curr, int k, bool root=false) {
dp[curr]=sum1[curr], ep[curr]=pw[curr]+sum2[curr];
for(auto [next, w]:adj2[curr]) {
dfs(next, k);
dp[curr]+=dp[next], ep[curr]+=dp[next];
}
vector<pair<int, int>> in1, in2, out1, out2;
for(auto [next, w]:adj2[curr]) {
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |