View Code
1 #include<stdio.h>
2 #define MAX 0xfffffff
3 #define max 105
4
5 int map[max][max],sign[max];
6 int main()
7 {
8 int n,a,b,c,d,i,j;
9 while(scanf( " %d ",&n)&&n)
10 {
11 for(i= 1;i<=n;i++)
12 {
13 sign[i]= 0;
14 for(j= 1;j<=n;j++)
15 map[i][j]=MAX;
16 }
17 for(i= 1;i<=n*(n- 1)/ 2;i++)
18 {
19 scanf( " %d%d%d%d ",&a,&b,&c,&d);
20 if(d== 1) map[a][b]=map[b][a]= 0;
21 else map[a][b]=map[b][a]=c;
22 }
23 int sum= 0,min,u;
24 for(i= 1;i<=n;i++)
25 {
26 sign[ 1]= 1;
27 min=MAX;
28 for(j= 1;j<=n;j++)
29 if(!sign[j]&&min>map[ 1][j])
30 {
31 min=map[ 1][j];
32 u=j;
33 }
34 sign[u]= 1;
35 if(min!=MAX) sum+=min;
36 for(j= 1;j<=n;j++)
37 if(map[u][j]<map[ 1][j])
38 map[ 1][j]=map[u][j];
39 }
40 printf( " %d\n ",sum);
41 }
42 return 0;
43 }
2 #define MAX 0xfffffff
3 #define max 105
4
5 int map[max][max],sign[max];
6 int main()
7 {
8 int n,a,b,c,d,i,j;
9 while(scanf( " %d ",&n)&&n)
10 {
11 for(i= 1;i<=n;i++)
12 {
13 sign[i]= 0;
14 for(j= 1;j<=n;j++)
15 map[i][j]=MAX;
16 }
17 for(i= 1;i<=n*(n- 1)/ 2;i++)
18 {
19 scanf( " %d%d%d%d ",&a,&b,&c,&d);
20 if(d== 1) map[a][b]=map[b][a]= 0;
21 else map[a][b]=map[b][a]=c;
22 }
23 int sum= 0,min,u;
24 for(i= 1;i<=n;i++)
25 {
26 sign[ 1]= 1;
27 min=MAX;
28 for(j= 1;j<=n;j++)
29 if(!sign[j]&&min>map[ 1][j])
30 {
31 min=map[ 1][j];
32 u=j;
33 }
34 sign[u]= 1;
35 if(min!=MAX) sum+=min;
36 for(j= 1;j<=n;j++)
37 if(map[u][j]<map[ 1][j])
38 map[ 1][j]=map[u][j];
39 }
40 printf( " %d\n ",sum);
41 }
42 return 0;
43 }