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 |
Re:Why RE?(内附代码)In Reply To:Why RE?(内附代码) Posted by:zgw at 2007-02-22 21:04:49 > # include <stdio.h> > # include <stdlib.h> > > # define MAXV 30 > # define MAXE 80 > > typedef struct enode > { > int v1; > int v2; > int weight; > }Edge; > > Edge E[MAXE]; > int MSW; > > int cmp(const void *a, const void *b) > { > struct enode *aa = (struct enode *)a; > struct enode *bb = (struct enode *)b; > return aa->weight-bb->weight; > } > > void kruskal(Edge E[], int n, int e) > { > int i, k, j; > int m1, m2, sn1, sn2; > int vest[MAXV]; > > for(i = 0; i < n; i++) > vest[i] = i; > k = 1; > j = 0; > while(k < n) > { > m1 = E[j].v1; m2 = E[j].v2; > sn1 = vest[m1]; sn2 = vest[m2]; > if(sn1!=sn2) > { > k++; > MSW += E[j].weight; > for(i = 0; i < n; i++) > if(vest[i]==sn2) > vest[i] = sn1; > } > j++; > } > } > > int get_graph(int n) > { > int N, e, weight; > char v1, v2; > > n--; e = 0; > while(n--) > { > getchar(); > scanf("%c%d",&v1,&N); > while(N--) > { > getchar(); > scanf("%c%d",&v2,&weight); > E[e].v1 = (int)(v1 - 'A'); > E[e].v2 = (int)(v2 - 'A'); > E[e].weight = weight; > e++; > } > > } > return e; > } > > int main() > { > int n, e; > > while(scanf("%d",&n)==1&&n) > { > e = get_graph(n); > MSW = 0; > qsort(E,e,sizeof(E[0]),cmp); > kruskal(E,n,e); > printf("%d\n",MSW); > } > return 1; > } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator