怎么我的算法时间和空间都这么就,别人的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;i s[u]) { min=s[v]; max=s[u]; } for(int j=0;j max) 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;i s[u]) { min=s[v]; max=s[u]; } for(int j=0;j max) s[j]--; } parts--; sum+=a[i].weight; } } } delete []s; }