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
AC × 9
AC × 15
AC × 15
TLE × 5
AC × 15
TLE × 10
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