您的位置:首页 > 其它

HDU 3371 Connect the Cities 最小生成树(和关于sort和qsort的一些小发现)

2014-02-24 21:57 507 查看
解题报告:有n个点,然后有m条可以添加的边,然后有一个k输入,表示一开始已经有k个集合的点,每个集合的点表示现在已经是连通的了。

还是用并查集加克鲁斯卡尔。只是在输入已经连通的集合的时候,通过并查集将该集合的点标记到一起,然后剩下的就可以当成是普通的最小生成树来做了题目代码如下:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<time.h>
using namespace std;

const int maxn = 100000;

int que[maxn];

int cmp(const void *a,const void *b)
{
return (*(int*)a) <= (*(int*)b)? -1:1;
}
bool comp(int a,int b)
{
return a <= b;
}
int main()
{
for(int i = maxn - 1;i >=0;--i)
que[i] = i;
int s = clock();
qsort(que,maxn,sizeof(int),cmp);
int e = clock();
printf("t_qsort = %d\n",e - s);
s = clock();
sort(que,que+maxn,comp);
e = clock();
printf("t_sort = %d\n",e - s);
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: