练习四1005
来源:互联网 发布:在数据库中存储的是 编辑:程序博客网 时间:2024/05/02 05:50
题意:和第四题差不多就是在第三个数后再加一个数1表示没联通0表示联通。
思路:结构体里加一个表示是否连通的变量,在主函数排序之前加一个if函数判断如果是1了两村之间的权值赋值为0.
感悟:要一点一点的积累以前学过的知识,总之能在前一道的基础上很快的做出来我还是挺开心的
#include<iostream>#include<stdio.h>#include<algorithm>using namespace std;const int N=1005;int father[N];int find(int x){ if(x!=father[x]) father[x]=find(father[x]); return father[x];}struct edge{ int x,y,v,a;}e[N*(N-1)/2];int cmp(edge e1,edge e2){ return e1.v<e2.v;}int main(){ int n; while(scanf("%d",&n),n) { for(int i=1;i<=n;i++) father[i]=i; n=n*(n-1)/2; for(int i=0;i<n;i++) { scanf("%d%d%d%d",&e[i].x,&e[i].y,&e[i].v,&e[i].a); if(e[i].a==1) { e[i].v=0; } } sort(e,e+n,cmp); int res=0; for(int i=0;i<n;i++) { int x=find(e[i].x); int y=find(e[i].y); if(x!=y) { res+=e[i].v; father[x]=y; } } printf("%d\n",res); } return 0;}。
AC代码:
0 0
- 练习四 1005
- 练习四 1005
- 练习四1005
- SDAU练习四 1005
- 练习四
- 练习四1005畅通工程2
- 数据库练习四
- 查询练习(四)
- Scala练习(四)
- 听课练习(四)
- 笔试练习四
- 笔试练习四
- 练习四1001
- 练习四 1001
- 练习四 1004
- 练习四 1003
- 练习四 1002
- 练习四 1001
- 线程(一)线程安全和不安全
- 斜率优化
- 【c++程序】字符串反转
- 2016~六月英语·活动·成长
- Android 自定义线程池
- 练习四1005
- XListView的使用
- Rxjava四步走到高级掌握
- Java(object类及方法简介)
- Activiti(二)流程实例
- 百度地图 5.0手机报错java.lang.UnsatisfiedLinkError: No implementation found for int
- 个人简历
- 【hibernate进阶】hibernate基本映射
- 通过HTML的方式给textview设置不同的颜色