A - Jungle Roads

匿名 (未验证) 提交于 2019-12-03 00:29:01




Input

Output

Sample Input
9 A 2 B 12 I 25 B 3 C 10 H 40 I 8 C 2 D 18 G 55 D 1 E 44 E 2 F 60 G 38 F 0 G 1 H 35 H 1 I 35 3 A 2 B 10 C 40 B 1 C 20 0
Sample Output
216 30


AC代码:

#include <stdio.h> #include <iostream> #include <stdlib.h> #include<algorithm> #include<cstring> #include<queue> #define MAX 1<<22; using namespace std; int z[1111][1111],p[1111],vis[1111],d[1111]; int a,b,c,pp,tt,closet[1111]; int m,n; void dks() {     for(int i=1;i<=a;i++)     {         d[i]=z[1][i];     }     for(int i=2;i<=a;i++)     {         int v;         int t=MAX;          for(int j=1;j<=a;j++)          {              if(d[j]!=0&&d[j]<t)              {                  t=d[j];                  v=j;              }          }          tt=tt+t;          d[v]=0;          for(int j=1;j<=a;j++)          {              if(d[j]!=0&&z[v][j]<d[j])              {                  d[j]=z[v][j];               }          }     } } int main() {      while(~scanf("%d",&a)&&a)     {        for(int i=0;i<=a;i++)        {            for(int j=0;j<=a;j++)            {                z[i][j]=MAX;            }            z[i][i]=0;        }         char l,x;         for(int i=0;i<a-1;i++)         {             cin>>l>>m;             int aa=l-'A'+1;             while(m--)             {                 cin>>x>>n;                 int bb=x-'A'+1;                 if(z[aa][bb]>n)                 z[aa][bb]=z[bb][aa]=n;             }          }         tt=0;         dks();         printf("%d\n",tt);     } } 

文章来源: A - Jungle Roads
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!