| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
这题输入格式好难处理,谁能进来看看我哪里处理错了造成TLE?#include <stdio.h>
#include <stdlib.h>
#define E 80
#define V 30
int e[E][3];
int d[V];
int cmp(const void* a, const void* b) {
int* c = (int*)a;
int* d = (int*)b;
return c[2] - d[2];
}
int kruskal(int n, int k) {
int p=0;
int max = 0;
while(p < n-1) {
int i;
for(i=0; i<k; i++) {
int t1 = e[i][0];
while(d[t1] != 0)
t1 = d[t1];
int t2 = e[i][1];
while(d[t2] != 0)
t2 = d[t2];
if(t1 != t2) {
p++;
max += e[i][2];
d[t1] = t2;
}
}
}
return max;
}
int main() {
while(1) {
int n;
char a,b; //吸收空格和回车
scanf("%d", &n);
if(n == 0)
break;
scanf("%c", &a);
int i,top=0,j;
for(i=0; i<n-1; i++) {
d[i] = 0;
int t;
char c;
scanf("%c%c%d", &c, &a, &t);
for(j=0; j<t; j++) {
char p;
int q;
scanf("%c%c%c%d", &a, &p, &b, &q);
e[top][0] = c-'A';
e[top][1] = p-'A';
e[top][2] = q;
top++;
}
scanf("%c", &a);
}
d[n-1] = 0;
qsort(e, top, sizeof(e[0]), cmp);
printf("%d\n", kruskal(n, top));
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator