BZOJ3624【生成树】
来源:互联网 发布:c语言学生综合测评系统 编辑:程序博客网 时间:2024/06/16 20:15
/* I will wait for you */ #include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<ctime>#include<algorithm>#include<iostream>#include<fstream>#include<vector>#include<queue>#include<deque>#include<set>#include<map>#include<string>#define make(a,b) make_pair(a,b)#define fi first#define se second using namespace std; typedef long long LL;typedef unsigned long long ULL;typedef pair<int,int> PII; const int maxn=1000010;const int maxm=1010;const int maxs=26;const int INF=1<<29;const int P=1000000000;const double error=1e-9;struct edge{ int u,v,t,in; }e[maxn];int n,m,k,fa[maxn];inline int read(){int x=0;char ch=getchar();while(ch>'9'||ch<'0') ch=getchar();while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();return x;}int find(int x){return x==fa[x]?x:fa[x]=find(fa[x]);}int main(){n=read(),m=read(),k=read();for(int i=1;i<=m;i++) e[i].u=read(),e[i].v=read(),e[i].t=read();for(int i=1;i<=n;i++) fa[i]=i;for(int i=1;i<=m;i++) if(e[i].t){int fu=find(e[i].u),fv=find(e[i].v);if(fu!=fv) fa[fu]=fv;}for(int i=1;i<=m;i++) if(!e[i].t){int fu=find(e[i].u),fv=find(e[i].v);if(fu!=fv) e[i].in=1,fa[fu]=fv;}int tmp=0;for(int i=1;i<=m;i++) if(!e[i].t&&e[i].in) tmp++;if (tmp>k) { printf("no solution\n");return 0; }for(int i=1;i<=n;i++) fa[i]=i;for(int i=1;i<=m;i++) if(!e[i].t&&e[i].in){int fu=find(e[i].u),fv=find(e[i].v);if(fu!=fv) fa[fu]=fv;}for(int i=1;tmp<k&&i<=m;i++) if(!e[i].t&&!e[i].in){int fu=find(e[i].u),fv=find(e[i].v);if(fu!=fv) tmp++,e[i].in=1,fa[fu]=fv;}for(int i=1;i<=m;i++) if(e[i].t){int fu=find(e[i].u),fv=find(e[i].v);if(fu!=fv) e[i].in=1,fa[fu]=fv;}int sum=0;for(int i=1;i<=m;i++) if(e[i].in) sum++;if(sum!=n-1||tmp!=k) { printf("no solution\n");return 0; }for(int i=1;i<=m;i++) if(e[i].in) printf("%d %d %d\n",e[i].u,e[i].v,e[i].t);return 0;}
0 0
- BZOJ3624【生成树】
- BZOJ3624 [Apio2008]免费道路
- bzoj3624 [Apio2008]免费道路
- [BZOJ3624][Apio2008]免费道路(贪心+并查集)
- 【bzoj3624】[Apio2008]免费道路 贪心+并查集
- [BZOJ3624][Apio2008]免费道路(并查集)
- 【BZOJ3624】【APIO2008】免费道路(贪心+并查集)
- 生成树
- 生成树
- 生成树
- 生成树
- 生成树
- 最小生成生成树计数
- 生成树和生成森林
- 图 - 生成树和最小生成树 - 生成树
- 图 - 生成树和最小生成树 - 最小生成树
- 树-生成树-最小生成树
- 图--生成树和最小生成树
- openssl keytool 制作签名证书
- fz432534fdg234523ddf235423
- 46dn534
- sed命令
- er432yr
- BZOJ3624【生成树】
- 43arew352asr436346
- Android优化——UI优化(二)
- 5sr43rsd43
- 43aewf4gs54
- 5sg4sdf32
- CMake 实例学习(一) 开始
- 弹幕小demo
- 462dsaf345454