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

wa的厉害...

Posted by mixter at 2005-09-01 15:56:39 on Problem 1258
In Reply To:.........难道有机关?求大大赐教~ Posted by:mixter at 2005-09-01 15:48:06
> #include <stdio.h>
> #include <iostream>
> using namespace std;
> #define Maxim 10000000                              
> #define n 101   
> int kase;
> typedef int AdjMatrix[n][n];                          
> typedef struct{                                      
> 	int fromvex,tovex;                                
> 	int length;                                       
> }TreeEdgeNode;
> typedef TreeEdgeNode MST[n-1];                       
> AdjMatrix G;                                          
> MST T;                                               
> 
> void InitCandidateSet(AdjMatrix G,MST T,int r){
> 	int i,k=0;
> 	for(i=0;i<kase;i++)                               
> 		if(i!=r){                                     
> 			T[k].fromvex = r;                        
> 			T[k].tovex   = i;                         
> 			T[k++].length= G[r][i];                    
> 		}
> }
> 
> 
> int SelectLightEdge(MST T,int k){
> 	int min = Maxim,i,minpos;
> 	for(i=k;i<kase-1;i++)                                 
> 		if(T[i].length < min){
> 			min = T[i].length;
> 			minpos = i;                              
> 		}
> 		return minpos;                                     
> }
> 
> 
> void McandidateSet(AdjMatrix G,MST T,int k,int v){
> 	int i,d;
> 	for(i=k;i<kase-1;i++){                               
> 		d = G[v][T[i].tovex];                          
> 		if(d<T[i].length){
> 			T[i].length = d;
> 			T[i].fromvex= v;                          
> 		}
> 	}
> }
> void PrimMST(AdjMatrix G,MST T,int r){
> 	int k,m,v;
> 	TreeEdgeNode e;	
> 	InitCandidateSet(G,T,r);                           
>     for(k=0;k<kase-1;k++){                               
>         m = SelectLightEdge(T,k);                     
> 		e   = T[m];
> 		T[m]= T[k];
> 		T[k]= e;                                                  
>         v   = T[k].tovex;                              
>         McandidateSet(G,T,k+1,v);                 
>     }
> }
> __int64 PrintMST(MST T){
> 	int i;
> 	__int64 sum=0;
> 	for(i=0;i<kase-1;i++){
> 		sum+=T[i].length;
> 	}
> 	return sum;
> }
> void main(){
> 	freopen("test.txt","r",stdin);
> 	int i,j;
> 	cin>>kase;
> 	for(i=0;i<kase;i++)
> 		for(j=0;j<kase;j++){
> 			cin>>G[i][j];
> 			if(i==j)
> 				G[i][j]= Maxim;
> 		}                                                      
> 	PrimMST(G,T,0);                              
> 	printf("%I64d\n",PrintMST(T));
> }

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