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 |
总是超时呀 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!In Reply To:小子哭求帮助啊!!!!!!!!!!!! Posted by:ook at 2005-07-14 18:04:10 > #include<stdio.h> > #include "math.h" > > typedef struct Graph{ > double ArrayGraph[760][760]; > int Vnum; > }Graph; > > typedef struct CTree{ > int TVex[760],Tnum; > int LVex[760],Lnum; > }CTree; > > typedef struct MinVex{ > int i; > double Weight; > }MinVex; > > Graph CurGraph; > CTree CurTree; > > double distance(int x1,int y1,int x2,int y2 ) > { > > return (pow((x1-x2),2)+pow((y1-y2),2)); > > } > > void InsertCTree(int Vnum); > int FindMin(double *MinWeight); > > int main() > { > int i,j,Qnum,Vnum,Xnum,a[750][2],b[750][2]; > double MinWeight=0; > > > CurTree.Lnum=0; CurTree.Tnum=0; > scanf("%d",&CurGraph.Vnum); > for(i=0;i<CurGraph.Vnum;i++){ > scanf("%d%d",&a[i][0],&a[i][1]); > CurTree.LVex[i]=i; > CurTree.Lnum++; > } > > for(i=0;i<CurGraph.Vnum;i++) > for(j=i+1;j<CurGraph.Vnum;j++) > CurGraph.ArrayGraph[i][j]=distance(a[i][0],a[i][1],a[j][0],a[j][1]); > > > > > scanf("%d",&Qnum); > for(i=0;i<Qnum;i++){ > scanf("%d%d",&b[i][0],&b[i][1]); > Vnum=b[i][0];Xnum=b[i][1]; > CurGraph.ArrayGraph[Vnum-1][Xnum-1]=0; > CurGraph.ArrayGraph[Xnum-1][Vnum-1]=0; > } > > while(CurTree.Lnum!=0){ > i=FindMin(&MinWeight); > InsertCTree(i); > } > return 1; > } > > void InsertCTree(int Vnum) > { > int i,j; > > for(i=0;i<CurTree.Lnum;i++) > if(CurTree.LVex[i]==Vnum) > break; > > if(i>=CurTree.Lnum) > return; > > for(j=i;j<CurTree.Lnum;j++) > CurTree.LVex[j]=CurTree.LVex[j+1]; > > CurTree.Lnum--; > > CurTree.TVex[CurTree.Tnum]=Vnum; > CurTree.Tnum++; > > return; > } > > int FindMin(double *MinWeight) > { > MinVex CurMinVex; > int i,j,temp,temp1; > > CurMinVex.Weight=19999; > if(CurTree.Tnum==0) return 0; > for(i=0;i<CurTree.Tnum;i++) > for(j=0;j<CurTree.Lnum;j++) > if(CurTree.TVex[i]>CurTree.LVex[j]) > { > if(CurGraph.ArrayGraph[CurTree.LVex[j]][CurTree.TVex[i]]<CurMinVex.Weight){ > CurMinVex.i=CurTree.LVex[j]; > temp=CurTree.TVex[i]; > temp1=CurTree.LVex[j]; > CurMinVex.Weight=CurGraph.ArrayGraph[temp1][temp]; > } > } > else > {if(CurGraph.ArrayGraph[CurTree.TVex[i]][CurTree.LVex[j]]<CurMinVex.Weight){ > CurMinVex.i=CurTree.LVex[j]; > temp=CurTree.TVex[i]; > temp1=CurTree.LVex[j]; > CurMinVex.Weight=CurGraph.ArrayGraph[temp][temp1]; > } > } > if((temp<temp1&&CurGraph.ArrayGraph[temp][temp1]!=0)||(temp>temp1&&CurGraph.ArrayGraph[temp1][temp]!=0)) > printf("%d %d\n",temp+1,temp1+1); > return CurMinVex.i; > } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator