1005
2016-06-29 08:04
190 查看
题目编号:1005
题目大意: 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全省畅通需要的最低成本。
解题思路:典型的并查集算法,根据并查集的模版就能算出来,不是很难的题。
做题感想:坚持就是胜利!
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
#define inf 0x3f3f3f3f
int adj[100];
int vis[100];
int nearest[100];
int map[100][100];
int n,m;
int YJY()
{
int i,j,min;
int ans=0;
vis[1]=1;
for(i=2;i<=n;i++)
{
nearest[i]=map[1][i];
adj[i]=1;
}
int cnt=n-1;
while(cnt--)
{
min=inf;
j=1;
for(i=1;i<=n;i++)
{
if(!vis[i]&&nearest[i]<min)
{
min=nearest[i];
j=i;
}
}
ans+=map[j][adj[j]];
vis[j]=1;
for(i=1;i<=n;i++)
{
if(!vis[i]&&map[i][j]<nearest[i])
{
nearest[i]=map[i][j];
adj[i]=j;
}
}
}
return ans;
}
int main()
{
int i;
while(cin>>n&&n)
{
int b,c,d,sta;
memset(vis,0,sizeof(vis));
memset(map,inf,sizeof(map));
m=n*(n-1)/2;
for(i=0;i<m;i++)
{
cin>>b>>c>>d>>sta;
if(sta==0)
map[b][c]=map[c][b]=d;
else
map[b][c]=map[c][b]=0;
}
int sum=YJY();
cout<<sum<<endl;
}
return 0;
}
题目大意: 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全省畅通需要的最低成本。
解题思路:典型的并查集算法,根据并查集的模版就能算出来,不是很难的题。
做题感想:坚持就是胜利!
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
#define inf 0x3f3f3f3f
int adj[100];
int vis[100];
int nearest[100];
int map[100][100];
int n,m;
int YJY()
{
int i,j,min;
int ans=0;
vis[1]=1;
for(i=2;i<=n;i++)
{
nearest[i]=map[1][i];
adj[i]=1;
}
int cnt=n-1;
while(cnt--)
{
min=inf;
j=1;
for(i=1;i<=n;i++)
{
if(!vis[i]&&nearest[i]<min)
{
min=nearest[i];
j=i;
}
}
ans+=map[j][adj[j]];
vis[j]=1;
for(i=1;i<=n;i++)
{
if(!vis[i]&&map[i][j]<nearest[i])
{
nearest[i]=map[i][j];
adj[i]=j;
}
}
}
return ans;
}
int main()
{
int i;
while(cin>>n&&n)
{
int b,c,d,sta;
memset(vis,0,sizeof(vis));
memset(map,inf,sizeof(map));
m=n*(n-1)/2;
for(i=0;i<m;i++)
{
cin>>b>>c>>d>>sta;
if(sta==0)
map[b][c]=map[c][b]=d;
else
map[b][c]=map[c][b]=0;
}
int sum=YJY();
cout<<sum<<endl;
}
return 0;
}
相关文章推荐
- JavaWeb系列——Hibernate——延迟加载(转)
- WPF中的binding(十)- Binding数据的校验
- 解决Yum安装依赖问题
- html5基础语句(学习)
- JavaWeb--Struts2——OGNL表达式
- 1010
- VMware 12安装Mac OS X 10.11
- Codeforces 22B Bargaining Table
- vijos1022(强联通分量模版题)
- C#基础一
- PHP几个防SQL注入攻击自带函数区别
- WPF中的binding(九)- 使用Binding的RelativeSource
- osgi + felix example2b编写
- profile
- 【直视骄阳】遗愿清单
- Java面向对象概念
- 关于promise
- C#中一些常用的加密和哈希处理
- Nodejs监控文件内容变化并获取最新添加的内容
- Xcode各版本官方下载及百度云盘下载, Mac和IOS及Xcode版本历史.