2019.6.7HDOJ-1232畅通工程,查并集

哇,今天的CF六一欢乐场我没去诶,队友都去了。
看来没打过CF的就我一个了,好自闭。

HDOJ-1232题目

Problem-1232畅通工程

AC的代码

#include
#include
using namespace std;
typedef long long ll;
int city[1005];
int findpar(int a);
int join(int a,int b);
int main()
{
	int n,m,uni;
	while(cin>>n>>m&&n){
		uni=n;//集团个数
		int i,city1,city2;
		for(i=1;i<=n;i++)
			city[i]=i;
		for(i=0;i<m;i++){//m条道路
			cin>>city1>>city2;
			if(findpar(city1)!=findpar(city2)){
				join(city1,city2);
				uni--;//每两个集团合并,uni-1
			}
		}
		cout<<uni-1<<endl;
	}
	return 0;
}
int findpar(int a)//找a的boss
{
	int r=city[a];//与a联通的城市
	while(city[r]!=r){
		r=city[r];
	}
	int temp;
	while(a!=r){
		temp=city[a];//a的上级
		city[a]=r;
		a=temp;
	}
	return r;
}
int join(int a,int b)
{
	int flag=0;
	int M=findpar(a),N=findpar(b);
	if(M!=N){
		flag=1;
		city[M]=N;
	}
	return flag;
}

写了一道查并集,查并集是一个半月之前学的,有点不熟……

HDOJ-1231题目

Problem-1231 How Many Tables

AC的代码

#include<stdio.h>
#include<string.h>
int head[1005];
int find(int x);
void join(int x,int y);
int main(void)
{
	int i,j;
	int t,n,m;
	scanf("%d",&t);
	while(t-->0){
		scanf("%d %d",&n,&m);
		memset(head,0,sizeof(int));
		for(i=1;i<=n;i++)
			head[i]=i;
		int x1,x2,count=0;
		while(m-->0){
			scanf("%d %d",&x1,&x2);
			if(find(x1)!=find(x2))
				join(x1,x2);
		}
		for(i=1;i<=n;i++){
			if(i==head[i])
				count++;
		}
		printf("%d\n",count);
	}
	return 0;
}
int find(int x)
{
	int i=x,temp;
	while(x!=head[x])
		x=head[x];
	while(i!=x){
		temp=i;
		i=head[i];
		head[temp]=x;
	}
	return x;
}
void join(int x,int y)
{
	int boss1=find(x);
	int boss2=find(y);
	if(boss1!=boss2){
		head[boss2]=boss1;
	}
	return;
}

这是当初学查并集时写的练习题。

Run ID Submit Time Judge Status Pro.ID Exe.Time Exe.Memory Code Len. Language Author
29401004 2019-06-07 22:32:33 Accepted 1232 109MS 1808K 813 B C++ Overstars
29030349 2019-04-23 12:38:48 Accepted 1213 0MS 1700K 761 B C Overstars
29028930 2019-04-23 07:31:28 Wrong Answer 1213 15MS 1692K 759 B C Overstars
29028927 2019-04-23 07:27:07 Wrong Answer 1213 15MS 1700K 731 B C Overstars

2019年6月7日23点02分

你可能感兴趣的:(OJ上的做题经验,我也要学算法)