Submission #3010201


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
typedef long long lint;
typedef long double llf;
typedef pair<int, int> pi;
const int mod = 1e9 + 7;
const int MAXN = 100005;

lint dap[MAXN];

struct disj{
	int pa[MAXN], sz[MAXN];
	lint offset[MAXN];
	vector<int> nd[MAXN];
	void init(int n){
		for(int i=1; i<=n; i++){
			pa[i] = i;
			sz[i] = 1;
			nd[i].push_back(i);
		}
	}
	int find(int x){
		return pa[x] = (pa[x] == x ? x : find(pa[x]));
	}
	bool uni(int p, int q, lint x){
		p = find(p);
		q = find(q);
		if(sz[p] < sz[q]) swap(p, q);
		pa[q] = p;
		offset[p] += sz[q] * x;
		for(auto &i : nd[q]){
			dap[i] += sz[p] * x + offset[q];
			dap[i] -= offset[p];
			nd[p].push_back(i);
		}
		sz[p] += sz[q];
		return 1;
	}
}disj;

struct edg{
	int s, e, x;
	bool operator<(const edg &e)const{
		return x > e.x;
	}
}v[MAXN];

int main(){
	int n;
	scanf("%d",&n);
	for(int i=1; i<n; i++){
		int s, e, x;
		scanf("%d %d %d",&s,&e,&x);
		v[i] = {s, e, x};
	}
	sort(v+1, v+n);
	disj.init(n);
	for(int i=1; i<n; i++){
		disj.uni(v[i].s, v[i].e, v[i].x);
	}
	lint f = disj.offset[disj.find(1)];
	for(int i=1; i<=n; i++) printf("%lld\n",f +  dap[i]);
}

Submission Info

Submission Time
Task E - Black Cats Deployment
User fxt
Language C++ (GCC 5.4.1)
Score 0
Code Size 1206 Byte
Status CE

Compile Error

./Main.cpp: In member function ‘bool disj::uni(int, int, lint)’:
./Main.cpp:31:13: error: ISO C++ forbids declaration of ‘i’ with no type [-fpermissive]
   for(auto &i : nd[q]){
             ^
./Main.cpp:31:17: warning: range-based ‘for’ loops only available with -std=c++11 or -std=gnu++11
   for(auto &i : nd[q]){
                 ^
./Main.cpp: In function ‘int main()’:
./Main.cpp:54:18: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
   v[i] = {s, e, x};
                  ^
./Main.cpp:54:8: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
   v[i] = {s, e, x};
        ^
./Main.cpp:50:16: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d",&n);
                ^
./Main.cpp:53:29: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d %d %d",&s,&e,&x);
                 ...