首页 > 其他 > 详细

HDU4907Task schedule(并查集)

时间:2014-09-03 14:58:36      阅读:87      评论:0      收藏:0      [点我收藏+]

题目:HDU4907Task schedule(并查集)


题目大意:中文题意自己看。


解题思路:并查集。


代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <functional>

using namespace std;

const int N = 2e5 + 5;

int num[N];
int p[N];
int n, m;

void init () {
	
	sort (num, num + n, greater<int>());
	for (int i = 1; i < N; i++)
		p[i] = i;	
}

int getParent (int q) {

	return q == p[q] ? q : p[q] = getParent(p[q]);
}

int main () {

	int T;
	scanf ("%d", &T);
	while (T--) {
	
		scanf ("%d%d", &n, &m);
		for (int i = n - 1; i >= 0; i--) 
			scanf ("%d", &num[i]);			
		
		init ();

		for (int i = 0; i < n; i++) 
			p[num[i]] = getParent(num[i] + 1); 

		int q;
		for (int i = 0; i < m; i++) {
			scanf ("%d", &q);
			printf ("%d\n", p[q]);
		}
		//printf ("%d\n", N);
	}
	return 0;
}


HDU4907Task schedule(并查集)

原文:http://blog.csdn.net/u012997373/article/details/39027473

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!