国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

POJ - 1611 The Suspects解題報告

2019-11-08 03:21:50
字體:
來源:轉載
供稿:網友

題目大意:n(30,000)個學生假如m(500)組,一個人可以加入多組,這堆學生被編號(0—n-1),編號為0的學生有病,一個組的人可以相互接觸,問有多少人可以和0號學生接觸(包括0號學生他自己) 

#include<iostream>#include<string.h>#define N 30000+500#define M 500+50using namespace std;int boss[N]={0};int n;int m;void init(){	for(int i=0;i<n;i++)	{		boss[i]=i;	}}void connect(int x,int y) {	if(x==0&&boss[y]==y)	{		boss[y]=0;		return;	}	if(y==0&&boss[x]==x)	{		boss[x]=0;		return;	}	if(boss[x]==x&&boss[y]==y)	{		boss[x]=y;		return;	}	boss[x]=boss[boss[x]];	boss[y]=boss[boss[y]];	connect(boss[x],boss[y]);}void ceshi1(){	for(int i=0;i<n;i++)	{		cout<<i<<":"<<boss[i]<<"   ";	} } int find(){	int s=0;	for(int i=0;i<n;i++)	{		int x=i;		while(1)		{			if(boss[x]==0)			{				//cout<<x;				s++;break;				}			/*cout<<i<<" "<<boss[i]<<"   ";			ceshi1();cout<<endl<<endl;*/			if(boss[x]==x)			{				break;			}			x=boss[x];		}	}	return s;}int main(){	while(cin>>n>>m)	{		if(m==0&&n==0)break;		init();		for(int i=0;i<m;i++)//輸入m行數據 		{			int l;			cin>>l;			l--;			int x;			cin>>x;			while(l--)			{				int t;				scanf("%d",&t);				connect(x,t);			}		}		//ceshi1();		cout<<find()<<endl;	}}并查集,大概就是這樣吧,然后注意別出現環,再寫快一點。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 靖西县| 周口市| 东宁县| 治县。| 定安县| 昆山市| 仁化县| 闽侯县| 汾西县| 澄迈县| 嫩江县| 新宁县| 南召县| 兴安盟| 宝山区| 策勒县| 丰都县| 商河县| 宣武区| 当雄县| 千阳县| 和平区| 高密市| 金川县| 嘉善县| 岳阳市| 奉新县| 渑池县| 察隅县| 鄂伦春自治旗| 永年县| 崇礼县| 称多县| 饶平县| 庆安县| 呈贡县| 广河县| 河间市| 上杭县| 南靖县| 上杭县|