Submission #35205
Source Code Expand
#include<cstdio> #include<vector> #include<algorithm> #include"grader.h" #define rep(i,n) for(int i=0;i<(n);i++) using namespace std; typedef long long ll; struct edge{ int u,v,cost; edge(){} edge(int u,int v,int cost):u(u),v(v),cost(cost){} bool operator<(const edge &e)const{ return cost<e.cost; } }; class union_find{ vector<int> a; public: union_find(int n):a(n,-1){} int find(int x){ if(a[x]<0) return x; return a[x]=find(a[x]); } void unite(int x,int y){ x=find(x),y=find(y); if(x!=y){ a[x]+=a[y]; a[y]=x; } } int size(int x){ return -a[find(x)]; } }; void construct(int n,int m,int E_[][3]){ static vector<edge> E[200000]; // E[v] := ( 番号が大きい方の端点が v である辺の集合 ) rep(i,m) E[E_[i][1]].push_back(edge(E_[i][0],E_[i][1],E_[i][2])); vector<edge> F; for(int k=2;k<=n;k++){ F.insert(F.end(),E[k-1].begin(),E[k-1].end()); sort(F.begin(),F.end()); ll ans=0; int cnt=0; union_find U(k); vector<bool> used(F.size()); rep(i,F.size()){ int u=F[i].u,v=F[i].v,cost=F[i].cost; if(U.find(u)!=U.find(v)){ U.unite(u,v); ans+=cost; cnt++; used[i]=true; } } answer(cnt==k-1?ans:-1); vector<edge> tmp=F; F.clear(); rep(i,used.size()) if(used[i]) F.push_back(tmp[i]); } }
Submission Info
Submission Time | |
---|---|
Task | A - かえってきたどうぶつたち と しんりんのさいせい (Return of Animals and Regeneration of Forests) |
User | fura2 |
Language | IOI-Style C++ (GCC 5.4.1) |
Score | 40 |
Code Size | 1336 Byte |
Status | TLE |
Exec Time | 1532 ms |
Memory | 12904 KB |
Judge Result
Set Name | Subtask1 | Subtask2 | Subtask3 | Subtask4 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 16 / 16 | 24 / 24 | 0 / 59 | 0 / 1 | ||||||||||||
Status |
|
|
|
|
Set Name | Test Cases |
---|---|
Subtask1 | subtask1/1, subtask1/2, subtask1/3, subtask1/4, subtask1/5, subtask1/6, subtask1/7, subtask1/8, subtask1/9 |
Subtask2 | subtask1/1, subtask1/2, subtask1/3, subtask1/4, subtask1/5, subtask1/6, subtask1/7, subtask1/8, subtask1/9, subtask2/1, subtask2/2, subtask2/3, subtask2/4, subtask2/5, subtask2/6 |
Subtask3 | subtask1/1, subtask1/2, subtask1/3, subtask1/4, subtask1/5, subtask1/6, subtask1/7, subtask1/8, subtask1/9, subtask2/1, subtask2/2, subtask2/3, subtask2/4, subtask2/5, subtask2/6, subtask3/1, subtask3/2, subtask3/3, subtask3/4, subtask3/5 |
Subtask4 | subtask1/1, subtask1/2, subtask1/3, subtask1/4, subtask1/5, subtask1/6, subtask1/7, subtask1/8, subtask1/9, subtask2/1, subtask2/2, subtask2/3, subtask2/4, subtask2/5, subtask2/6, subtask3/1, subtask3/2, subtask3/3, subtask3/4, subtask3/5, subtask4/1, subtask4/2, subtask4/3, subtask4/4, subtask4/5 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
subtask1/1 | AC | 29 ms | 5388 KB |
subtask1/2 | AC | 30 ms | 5364 KB |
subtask1/3 | AC | 30 ms | 5452 KB |
subtask1/4 | AC | 29 ms | 5364 KB |
subtask1/5 | AC | 78 ms | 5496 KB |
subtask1/6 | AC | 64 ms | 5500 KB |
subtask1/7 | AC | 74 ms | 5504 KB |
subtask1/8 | AC | 65 ms | 5504 KB |
subtask1/9 | AC | 72 ms | 5500 KB |
subtask2/1 | AC | 1457 ms | 7540 KB |
subtask2/2 | AC | 1118 ms | 7428 KB |
subtask2/3 | AC | 1165 ms | 7524 KB |
subtask2/4 | AC | 973 ms | 7548 KB |
subtask2/5 | AC | 1474 ms | 7540 KB |
subtask2/6 | AC | 71 ms | 8316 KB |
subtask3/1 | TLE | 1531 ms | 7676 KB |
subtask3/2 | TLE | 1531 ms | 7864 KB |
subtask3/3 | TLE | 1531 ms | 7796 KB |
subtask3/4 | TLE | 1531 ms | 7804 KB |
subtask3/5 | TLE | 1530 ms | 7672 KB |
subtask4/1 | TLE | 1531 ms | 12276 KB |
subtask4/2 | TLE | 1532 ms | 12904 KB |
subtask4/3 | TLE | 1532 ms | 12164 KB |
subtask4/4 | TLE | 1531 ms | 12152 KB |
subtask4/5 | TLE | 1532 ms | 12164 KB |