HDU1879
来源:互联网 发布:rx1r2 知乎 编辑:程序博客网 时间:2024/06/05 15:50
这道题其实就是在最小生成树上要加一个判断,就是当这条道路修成时,两条道路间的费用是0,只要把这里处理好,这道题就跟普通的最小生成树没有什么区别了
#include<stdio.h>#include<string.h>#include<iostream>#include<cmath>#include<cstdlib>#include<vector>#include<algorithm>#include<vector>#include<queue>#include<set>#define inf 0x7fffffffusing namespace std;#define N 9999999int map[101][101];int mark[101];bool visited[101];int n;int prim(){int i,j,k,sum=0,min;memset(mark,0,sizeof(mark));memset(visited,0,sizeof(visited));k=1;visited[k]=1;for(i=2;i<=n;i++){mark[i]=map[k][i]; //计算k到各顶点的距离}min=N;for(i=1;i<=n-1;i++){for(j=1;j<=n;j++)if(mark[j]<min&&!visited[j]){min=mark[j];k=j;}visited[k]=1;for(j=1;j<=n;j++){if(mark[j]>map[k][j]&&!visited[j])mark[j]=map[k][j];}sum+=min;min=N;}return sum;}int main(){int i,j;int a,b,s,x;while(cin>>n&&n){for(i=1;i<=n;i++)for(j=1;j<=n;j++){if(i==j){map[i][j]=0;}else{map[i][j]=N;}}for(i=1;i<=n*(n-1)/2;i++){scanf("%d%d%d%d",&a,&b,&s,&x);if(x==0){map[a][b]=s; map[b][a]=s;}else{map[a][b]=0;map[b][a]=0;}}printf("%d\n",prim());}return 0;}
0 0
- hdu1879
- hdu1879
- hdu1879
- HDU1879
- HDU1879(prim)
- hdu1879继续畅通工程
- hdu1102类似hdu1879
- HDU1879继续畅通工程
- HDU1879--继续畅通工程
- hdu1879畅通工程
- hdu1879 继续畅通工程
- hdu1879(解题报告)
- HDU1879继续畅通工程
- hdu1879继续畅通工程
- HDU1879继续畅通工程
- hdu1879继续畅通工程
- HDU1879---继续畅通工程
- HDU1879 继续畅通工程
- 网站后台管理系统教程,网站如何在80端口被封、动态IP甚至无公网IP环境发布外网
- 周世黑鸭带您走向成功之路
- Linux下who命令的实现
- 选择的理由
- houoj2048神、上帝以及老天爷
- HDU1879
- 考虑一个线性地址转换物理地址的过程
- hdu2192 MagicBuilding
- HDU1150/POJ1325_Machine Schedule(二分图/最小点覆盖=最大匹配)
- windows MFC——汉罗塔可视化移动程序
- 创建前台Service
- wiki 1257 打砖块
- 仿函数(functors)
- sql截取特殊字符分隔开的字串