```
#include <bits/stdc++.h>
using namespace std;
#define maxn 210
#define maxw 6010
int f[maxn],n,cw,head[maxw];
struct node {
int u,v,w,tm;
}e[maxw];
inline void init_() {
freopen("shouj.txt","r",stdin);
}
inline int read_() {
int x=0,f=1;
char c=getchar();
while(c<'0'||c>'9') {
if(c=='-') f=-1;
c=getchar();
}
while(c>='0'&&c<='9') {
x=x*10+c-'0';
c=getchar();
}
return x*f;
}
inline void readda_() {
n=read_();cw=read_();
int x,y,z;
for(int i=1;i<=cw;i++) {
x=read_();y=read_();z=read_();
e[i].u=x,e[i].v=y,e[i].w=z,e[i].tm=i;
}
}
inline bool cmp_(node ab,node ac) {
return ab.w<ac.w;
}
inline void clean_() {
for(int i=0;i<=n;i++) f[i]=i;
}
inline int find_(int x) {
if(f[x]==x) return x;
else return f[x]=find_(f[x]);
}
inline void merge_(int x,int y) {
int rx=find_(x);
int ry=find_(y);
f[rx]=ry;
}
inline int ksull_(int ttm) {
clean_();
int ans=0,size=0;
for(int i=1;i<=cw;i++) {
if(e[i].tm>ttm) continue;
if(size==(n-1)) return ans;
int u=e[i].u,v=e[i].v;
if(f[u]!=f[v]) {
ans+=e[i].w;
merge_(u,v);
++size;
}
}
if(size<(n-1)) return -1;
if(size==(n-1)) return ans;
}
inline void work_() {
sort(e+1,e+cw+1,cmp_);
for(int i=1;i<=cw;i++) printf("%d\n",ksull_(i));
}
int main() {
init_();
readda_();
work_();
return 0;
}
```
by 小元勋 @ 2019-03-21 17:31:46
%%%%%%
by 绵中大佬 @ 2019-03-21 17:35:12
不会
by Sky_Art @ 2019-03-21 17:39:02
请发到题目讨论版(对应题目的题目讨论版)
by dblark @ 2019-03-21 17:39:18
去掉文件
by Sai0511 @ 2019-03-21 17:51:03
```cpp
#include <bits/stdc++.h>
using namespace std;
#define maxn 210
#define maxw 6010
int f[maxn],n,cw,head[maxw];
struct node {
int u,v,w,tm;
}e[maxw];
inline void init_() {
//freopen("shouj.txt","r",stdin);//把freopen去掉才行
}
inline int read_() {
int x=0,f=1;
char c=getchar();
while(c<'0'||c>'9') {
if(c=='-') f=-1;
c=getchar();
}
while(c>='0'&&c<='9') {
x=x*10+c-'0';
c=getchar();
}
return x*f;
}
inline void readda_() {
n=read_();cw=read_();
int x,y,z;
for(int i=1;i<=cw;i++) {
x=read_();y=read_();z=read_();
e[i].u=x,e[i].v=y,e[i].w=z,e[i].tm=i;
}
}
inline bool cmp_(node ab,node ac) {
return ab.w<ac.w;
}
inline void clean_() {
for(int i=0;i<=n;i++) f[i]=i;
}
inline int find_(int x) {
if(f[x]==x) return x;
else return f[x]=find_(f[x]);
}
inline void merge_(int x,int y) {
int rx=find_(x);
int ry=find_(y);
f[rx]=ry;
}
inline int ksull_(int ttm) {
clean_();
int ans=0,size=0;
for(int i=1;i<=cw;i++) {
if(e[i].tm>ttm) continue;
if(size==(n-1)) return ans;
int u=e[i].u,v=e[i].v;
if(find_(f[u])!=find_(f[v])) {//要把f[u] f[v]find_之后再判断
ans+=e[i].w;
merge_(u,v);
++size;
}
}
if(size<(n-1)) return -1;
if(size==(n-1)) return ans;
}
inline void work_() {
sort(e+1,e+cw+1,cmp_);
for(int i=1;i<=cw;i++) printf("%d\n",ksull_(i));
}
int main() {
init_();
readda_();
work_();
return 0;
}
```
by AOTO @ 2019-03-21 18:20:37
@[何元勋](/space/show?uid=109427)
by AOTO @ 2019-03-21 18:20:51