usaco Agri-Net
2015-09-04 20:14
281 查看
稠密图的最小生成树
使用prim算法/*
ID:zhdxzwj1
LANG:C++
PROG:agrinet
*/
#include <bits/stdc++.h>
int flag[102][102];
int seen[102]={0};
int parent[102];
int dist[102]={0};
int main()
{
freopen("agrinet.in","r",stdin);
freopen("agrinet.out","w",stdout);
int n;
scanf("%d",&n);
int i,j,k;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
scanf("%d",&flag[i][j]);
}
parent[0]=-1;
seen[0]=1;
for(i=0;i<n;i++)
{
if(flag[0][i]>=0)
dist[i]=flag[0][i];
else
dist[i]=INT_MAX;
}i=0;
int path=0;
while(1)
{
int mi=INT_MAX;
for(k=0;k<n;k++)
if(seen[k]==0&&dist[k]<mi)
{
mi=dist[k];
j=k;
}
if(j==i)
break;
path+=mi;
seen[j]=1;
i=j;
for(k=0;k<n;k++)
{
if(seen[k]==0)
dist[k]=std::min(flag[j][k],dist[k]);
}
}
printf("%d\n",path);
return 0;
}
使用prim算法/*
ID:zhdxzwj1
LANG:C++
PROG:agrinet
*/
#include <bits/stdc++.h>
int flag[102][102];
int seen[102]={0};
int parent[102];
int dist[102]={0};
int main()
{
freopen("agrinet.in","r",stdin);
freopen("agrinet.out","w",stdout);
int n;
scanf("%d",&n);
int i,j,k;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
scanf("%d",&flag[i][j]);
}
parent[0]=-1;
seen[0]=1;
for(i=0;i<n;i++)
{
if(flag[0][i]>=0)
dist[i]=flag[0][i];
else
dist[i]=INT_MAX;
}i=0;
int path=0;
while(1)
{
int mi=INT_MAX;
for(k=0;k<n;k++)
if(seen[k]==0&&dist[k]<mi)
{
mi=dist[k];
j=k;
}
if(j==i)
break;
path+=mi;
seen[j]=1;
i=j;
for(k=0;k<n;k++)
{
if(seen[k]==0)
dist[k]=std::min(flag[j][k],dist[k]);
}
}
printf("%d\n",path);
return 0;
}
相关文章推荐
- USACO 3.2.2:Stringsobits
- USACO 3.1 Shaping Regions
- 【解题报告】【USACO】酸奶工厂
- usaco-Calf Flac
- usaco/1.1 Your Ride Is Here
- usaco/1.1 Greedy Gift Givers
- usaco/1.1 Friday the Thirteenth
- usaco/ 1.1 Broken Necklace
- USACO/fact4 3.2.1
- USACO/spin 3.2.3
- USACO/rockers 3.4.4 动态规划
- USACO 2.2 Party Lamps
- USACO 2.2 Runaround Numbers
- USACO 2.2 Subset Numbers
- USACO 2.2 Preface Numbering
- USACO 2.1 Ordered Fractions
- USACO 2.1 Hamming Codes
- USACO 2.1 Healthy Holsteins
- USACO 2.1 Sorting A Three-Valued Sequence
- USACO 2.1 The Castle