poj 1789 Truck History(kruskal算法实现)

2014-11-23 23:55:29 · 作者: · 浏览: 2

怎么我的算法时间和空间都这么就,别人的kruskal还是比较快的! 去学习一下!

   /*kruskal算法*/ 
#include   
//#include   
#include    
using namespace std; 
#define MAX 2001  
#define min(a,b)  (a-b<0 a:b)  
 
/*45612K    1563MS*/ 
typedef struct _node 
{ 
        int x,y; 
        int weight; 
}node; 
 
int n; 
char a[MAX][8]; 
int sum; 
//fstream fin;  
 
void kruskal(node *a,int index); 
int GetDis(int x,int y); 
int cmp(const void *a,const void *b); 
 
int main() 
{ 
    //fin.open("1789.txt",ios::in);  
    while(cin>>n) 
    { 
         if(n==0)  break; 
         sum=0; 
         for(int i=0;i>a[i]; 
         //计算边的信息  
         node *a=new node[n*n];  
         node temp; 
         int index=0; 
         for(int i=0;is[u]) 
                       { 
                          min=s[v]; 
                          max=s[u]; 
                       }  
                       for(int j=0;jmax) 
                             s[j]--; 
                       } 
                       parts--;  
                       sum+=a[i].weight; 
                 } 
             } 
     } 
      
     delete []s; 
          
} 

/*kruskal算法*/
#include 
//#include #include using namespace std; #define MAX 2001 #define min(a,b) (a-b<0 a:b) /*45612K 1563MS*/ typedef struct _node { int x,y; int weight; }node; int n; char a[MAX][8]; int sum; //fstream fin; void kruskal(node *a,int index); int GetDis(int x,int y); int cmp(const void *a,const void *b); int main() { //fin.open("1789.txt",ios::in); while(cin>>n) { if(n==0) break; sum=0; for(int i=0;i>a[i]; //计算边的信息 node *a=new node[n*n]; node temp; int index=0; for(int i=0;is[u]) { min=s[v]; max=s[u]; } for(int j=0;jmax) s[j]--; } parts--; sum+=a[i].weight; } } } delete []s; }