http://acm.nyist.net/JudgeOnline/problem.php?pid=434
2011-10-24 20:47
405 查看
一道最小生成树的题,属于模板题,,,,月赛竟然弄了这么长时间,才AC,这道替我用的是prim算法,用krusal也可以,,,
#include<iostream>
#include<string.h>
#include<algorithm>
#define N 28
#define M 99999999
using namespace std;
int map
;
int dist
;
bool visit
;
int n,m;
void prim()
{ int i,j;
for( i=1;i<=m;++i)
{ dist[i]=M;
visit[i]=true;
}
int now=1;
dist[now]=0;
visit[now]=false;
int ans=0;
for( i=1;i<=m;i++)
{ ans+=dist[now];
for( j=1;j<=m;++j)
if(visit[j]&&dist[j]>map[now][j])
dist[j]=map[now][j];
int minx=M;
for(j=1;j<=m;j++)
if(dist[j]<minx&&visit[j])
minx=dist[now=j];
visit[now]=false;
}
cout<<ans<<endl;
}
int main()
{ while(cin>>n&&n)
{ int nn,i,j,s,aa,bb;
char ch,mm;
m=0;
for( i=1;i<=28;++i)
for( j=1;j<=28;j++)
map[i][j]=M;
for( i=1;i<=n-1;++i)
{ cin>>ch;
bb=(int)(ch-64);
cin>>nn;
for( j=1;j<=nn;++j)
{ cin>>mm;
cin>>s;
aa=(int)(mm-64);
if(aa>m) m=aa;
if(map[bb][aa]>s)
{ map[bb][aa]=s;
map[aa][bb]=s;
}
}
}
prim();
}return 0;
}
#include<iostream>
#include<string.h>
#include<algorithm>
#define N 28
#define M 99999999
using namespace std;
int map
;
int dist
;
bool visit
;
int n,m;
void prim()
{ int i,j;
for( i=1;i<=m;++i)
{ dist[i]=M;
visit[i]=true;
}
int now=1;
dist[now]=0;
visit[now]=false;
int ans=0;
for( i=1;i<=m;i++)
{ ans+=dist[now];
for( j=1;j<=m;++j)
if(visit[j]&&dist[j]>map[now][j])
dist[j]=map[now][j];
int minx=M;
for(j=1;j<=m;j++)
if(dist[j]<minx&&visit[j])
minx=dist[now=j];
visit[now]=false;
}
cout<<ans<<endl;
}
int main()
{ while(cin>>n&&n)
{ int nn,i,j,s,aa,bb;
char ch,mm;
m=0;
for( i=1;i<=28;++i)
for( j=1;j<=28;j++)
map[i][j]=M;
for( i=1;i<=n-1;++i)
{ cin>>ch;
bb=(int)(ch-64);
cin>>nn;
for( j=1;j<=nn;++j)
{ cin>>mm;
cin>>s;
aa=(int)(mm-64);
if(aa>m) m=aa;
if(map[bb][aa]>s)
{ map[bb][aa]=s;
map[aa][bb]=s;
}
}
}
prim();
}return 0;
}
相关文章推荐
- http://acm.nyist.net/JudgeOnline/problem.php?pid=257&&中缀表达式变后缀表达式
- 阶乘之和http://acm.nyist.net/JudgeOnline/problem.php?pid=91
- 最少乘法次数 http://acm.nyist.net/JudgeOnline/problem.php?pid=46
- http://acm.nyist.net/JudgeOnline/problem.php?pid=128&&前缀式计算
- http://acm.nyist.net/JudgeOnline/problem.php?pid=309
- 数的长度http://acm.nyist.net/JudgeOnline/problem.php?pid=69
- 超级台阶http://acm.nyist.net/JudgeOnline/problem.php?pid=76
- http://acm.nyist.net/JudgeOnline/problem.php?pid=290
- http://acm.nyist.net/JudgeOnline/problem.php?pid=13
- 独木舟上的旅行http://acm.nyist.net/JudgeOnline/problem.php?pid=71
- http://acm.nyist.net/JudgeOnline/problem.php?pid=45
- http://acm.nyist.net/JudgeOnline/problem.php?pid=431
- 表达式求值 http://acm.nyist.net/JudgeOnline/problem.php?pid=305
- http://acm.nyist.net/JudgeOnline/problem.php?pid=120&&强连通分量
- 取石子(一)http://acm.nyist.net/JudgeOnline/problem.php?pid=23
- 幸运三角形&&http://acm.nyist.net/JudgeOnline/problem.php?pid=491
- 荷兰国旗问题 http://acm.nyist.net/JudgeOnline/problem.php?pid=268
- 分数加减法 http://acm.nyist.net/JudgeOnline/problem.php?pid=111
- http://acm.nyist.net/JudgeOnline/problem.php?pid=325
- 最小点覆盖集&&http://acm.nyist.net/JudgeOnline/problem.php?pid=237