hdu 1301 Jungle Roads
2013-04-16 18:39
190 查看
/* MST 水题!*/
#include<cstring>
#include<cstdio>
#define INF 1<<30
int map[30][30],low[30],vis[30];
int n;
int prim()
{
int ans=0;
for(int i = 0; i <= n; i++)
low[i] = map[1][i];
vis[1] = 1;
for(int i = 1; i < n; i++)
{
int temp = INF,pos=-1;
for(int j = 0; j < n; j++)
if(!vis[j]&&temp>low[j])
{
temp=low[j];
pos = j;
}
//if(pos==-1) return -1;
vis[pos] = 1;
ans += low[pos];
for(int j = 0; j < n; j++)
if(!vis[j]&&low[j]>map[pos][j])
low[j] = map[pos][j];
}
return ans;
}
int main()
{
char ch[2],cha[2];
int cm,cma;
while(scanf("%d",&n),n)
{
memset(vis,0,sizeof(vis));
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
map[i][j] = INF;
for(int i = 1; i < n; i++)
{
scanf("%s %d",&ch,&cm);
int x = ch[0]-'A';
while(cm--)
{
scanf("%s %d",&cha,&cma);
int y = cha[0]-'A';
if(cma<map[x][y])
map[x][y] = map[y][x] = cma;
}
}
printf("%d\n",prim());
}
return 0;
}
#include<cstring>
#include<cstdio>
#define INF 1<<30
int map[30][30],low[30],vis[30];
int n;
int prim()
{
int ans=0;
for(int i = 0; i <= n; i++)
low[i] = map[1][i];
vis[1] = 1;
for(int i = 1; i < n; i++)
{
int temp = INF,pos=-1;
for(int j = 0; j < n; j++)
if(!vis[j]&&temp>low[j])
{
temp=low[j];
pos = j;
}
//if(pos==-1) return -1;
vis[pos] = 1;
ans += low[pos];
for(int j = 0; j < n; j++)
if(!vis[j]&&low[j]>map[pos][j])
low[j] = map[pos][j];
}
return ans;
}
int main()
{
char ch[2],cha[2];
int cm,cma;
while(scanf("%d",&n),n)
{
memset(vis,0,sizeof(vis));
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
map[i][j] = INF;
for(int i = 1; i < n; i++)
{
scanf("%s %d",&ch,&cm);
int x = ch[0]-'A';
while(cm--)
{
scanf("%s %d",&cha,&cma);
int y = cha[0]-'A';
if(cma<map[x][y])
map[x][y] = map[y][x] = cma;
}
}
printf("%d\n",prim());
}
return 0;
}
相关文章推荐
- Jungle Roads_hdu_1301(prim算法)
- hdu 1301 Jungle Roads
- hdu 1301 Jungle Roads
- hdu 1301 jungle roads
- hdu 1301 Jungle Roads(最小生成树Kruskal)
- HDU - 1301 - Jungle Roads (最小生成树!!prim算法!!)
- HDU 1301 Jungle Roads 最小生成树(简单)
- hdu 1301 Jungle Roads (最小生成树)
- hdu 1301 Jungle Roads(最小生成树kruskal)
- hdu 1301 Jungle Roads 简单的kruskal
- HDU 1301 Jungle Roads (Kruscal 最小生成树)
- HDU-1301Jungle Roads
- HDU 1301 Jungle Roads
- hdu1301——Jungle Roads
- hdu 1301 Jungle Roads
- HDU 1301 Jungle Roads (最小生成树)
- HDU 1301 Jungle Roads
- HDU 1301-Jungle Roads (Kruscal 最小生成树)
- HDU 1301 Jungle Roads (最小生成树/模板题)
- HDU 1301 Jungle Roads