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); ...