이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
typedef pair<int,int> pii;
int N;
int x,y,z;
vector<pii> grafo[200005];
int A[200005],B[200005];
void DFS(int k, int p=-1){
for(pii f:grafo[k])
if(f.first!=p)
DFS(f.first,k);
vector<int> v;
for(pii f:grafo[k])
if(f.first!=p){
A[k]+=max(A[f.first],B[f.first]+f.second);
v.push_back(A[f.first]+f.second-max(A[f.first],B[f.first]+f.second));
}
sort(v.begin(),v.end(),greater<int>());
if(grafo[k].size()==1 and k!=1)
B[k]=-2e9;
else
B[k]=A[k]+v[0];
if(v.size()>1 and v[0]+v[1]>0)
A[k]=A[k]+v[0]+v[1];
}
int main(){
cin>>N;
for(int i=0;i<N-1;i++){
cin>>x>>y>>z;
grafo[x].push_back({y,z});
grafo[y].push_back({x,z});
}
DFS(1);
cout<<A[1];
}
# | 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... |