Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

总是超时呀 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Posted by ook at 2005-07-14 18:04:37 on Problem 1751
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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator