POJ - 2421 Constructing Roads【最小生成树】
2017-03-29 22:50
519 查看
题意:
给你n个城市,然后给出每个城市的距离。
再给你说已经有哪些城市已经连起来了。
剩下问你联通的最小修路代价是多少。
题解:
最小生成树。把连好的城市距离改成0就行了。
直接模板。
#include<iostream>
#include<queue>
#include<stdio.h>
#define ll long long
using namespace std;
const int maxn= 111;
int a[maxn][maxn];
int dis[maxn];
int n,m,x,y;
void prim(){
int i,j,k,mina;
bool f[maxn];
for(i=2;i<=n;++i){
f[i]=0;
dis[i]=a[1][i];
}
dis[1]=0;
f[1]=1;
for(i=1;i<=n-1;++i){
mina=9999999;
k=0;
for(j=1;j<=n;++j){
if(!f[j]&&dis[j]<mina){
mina=dis[j];
k=j;
}
}
if(k==0) return;
f[k]=1;
for(j=1;j<=n;++j){
if(!f[j]&&a[k][j]!=9999999&&dis[j]>a[k][j]){
dis[j]=a[k][j];
}
}
}
}
int main(){
while(~scanf("%d",&n)){
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
scanf("%d",&a[i][j]);
scanf("%d",&m);
while(m--){
scanf("%d %d",&x,&y);
a[x][y]=a[y][x]=0;
}
prim();
int ans=0;
for(int i=1;i<=n;++i)
ans+=dis[i];
printf("%d\n",ans);
}
return 0;
}
给你n个城市,然后给出每个城市的距离。
再给你说已经有哪些城市已经连起来了。
剩下问你联通的最小修路代价是多少。
题解:
最小生成树。把连好的城市距离改成0就行了。
直接模板。
#include<iostream>
#include<queue>
#include<stdio.h>
#define ll long long
using namespace std;
const int maxn= 111;
int a[maxn][maxn];
int dis[maxn];
int n,m,x,y;
void prim(){
int i,j,k,mina;
bool f[maxn];
for(i=2;i<=n;++i){
f[i]=0;
dis[i]=a[1][i];
}
dis[1]=0;
f[1]=1;
for(i=1;i<=n-1;++i){
mina=9999999;
k=0;
for(j=1;j<=n;++j){
if(!f[j]&&dis[j]<mina){
mina=dis[j];
k=j;
}
}
if(k==0) return;
f[k]=1;
for(j=1;j<=n;++j){
if(!f[j]&&a[k][j]!=9999999&&dis[j]>a[k][j]){
dis[j]=a[k][j];
}
}
}
}
int main(){
while(~scanf("%d",&n)){
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
scanf("%d",&a[i][j]);
scanf("%d",&m);
while(m--){
scanf("%d %d",&x,&y);
a[x][y]=a[y][x]=0;
}
prim();
int ans=0;
for(int i=1;i<=n;++i)
ans+=dis[i];
printf("%d\n",ans);
}
return 0;
}
相关文章推荐
- poj 2421 最小生成树(prime) 模版题
- POJ 2421 Constructing Roads(最小生成树)
- POJ 2421 -Constructing Roads -最小生成树
- poj 2421 Constructing Roads(最小生成树)
- POJ 2421 Constructing Roads 修建道路 最小生成树 Kruskal算法
- poj 1251 1258 2421 2485(最小生成树prime)
- POJ2421_Constructing Roads(最小生成树)
- poj 2421 Constructing Roads(最小生成树 kruskal算法)
- POJ-2421 最小生成树 算法复习计划
- POJ 2421 HDOJ 1102 Constructing Roads(kuangbin带你飞 专题六:最小生成树)
- POJ 2421 Constructing Roads 最小生成树
- POJ 2421 Constructing Roads 最小生成树 kruscal+并查集
- POJ 2421 最小生成树
- [NWPU][2014][TRN][17]最小生成树 B - 基础 POJ 2421
- poj 2421 Constructing Roads 最小生成树
- POJ2421 prim算法求最小生成树
- Poj 2421 Constructing Roads(Prim 最小生成树)
- Poj 2421 Constructing Roads(Prim 最小生成树)
- POJ 2421 图的最小生成树 prim算法 模板代码的利用
- poj 2421 Constructing Roads(最小生成树))