# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
155691 | 2019-09-29T21:09:29 Z | TadijaSebez | Telegraph (JOI16_telegraph) | C++11 | 4 ms | 2680 KB |
#include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back const int N=100050; vector<pair<int,int>> E[N]; int a[N],c[N],go[N]; bool was[N]; int main() { int n; scanf("%i",&n); ll sum=0,ans=0; for(int i=1;i<=n;i++) scanf("%i %i",&a[i],&c[i]),E[a[i]].pb({c[i],i}),sum+=c[i]; for(int i=1;i<=n;i++) { sort(E[i].rbegin(),E[i].rend()); if(E[i].size()) go[E[i][0].second]=i,ans+=E[i][0].first; } int last=-1; for(int i=1;i<=n;i++) if(!was[i]) { int mx=-2e9,j; for(j=i;j && !was[j];j=go[j]) { int tmp=E[j].size()?-E[j][0].first:0; if(E[j].size()>=2) tmp+=E[j][1].first; mx=max(mx,tmp); was[j]=1; } if(j) ans+=mx,last=i; } if(last==1) printf("0\n"); else printf("%lld\n",sum-ans); return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 4 ms | 2680 KB | Output is correct |
2 | Correct | 4 ms | 2680 KB | Output is correct |
3 | Incorrect | 4 ms | 2552 KB | Output isn't correct |
4 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 4 ms | 2680 KB | Output is correct |
2 | Correct | 4 ms | 2680 KB | Output is correct |
3 | Incorrect | 4 ms | 2552 KB | Output isn't correct |
4 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 4 ms | 2680 KB | Output is correct |
2 | Correct | 4 ms | 2680 KB | Output is correct |
3 | Incorrect | 4 ms | 2552 KB | Output isn't correct |
4 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 4 ms | 2680 KB | Output is correct |
2 | Correct | 4 ms | 2680 KB | Output is correct |
3 | Incorrect | 4 ms | 2552 KB | Output isn't correct |
4 | Halted | 0 ms | 0 KB | - |