国产探花免费观看_亚洲丰满少妇自慰呻吟_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;	}}并查集,大概就是這樣吧,然后注意別出現環,再寫快一點。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 岚皋县| 鄯善县| 张家界市| 漳浦县| 莫力| 和顺县| 赤水市| 淮北市| 垦利县| 大厂| 珠海市| 城固县| 安福县| 疏勒县| 嘉禾县| 法库县| 仁寿县| 克拉玛依市| 九江县| 莱阳市| 潜山县| 杭锦后旗| 西平县| 湖南省| 贵州省| 招远市| 西乌珠穆沁旗| 周口市| 辽阳市| 社旗县| 兴安盟| 合阳县| 克什克腾旗| 英吉沙县| 噶尔县| 利辛县| 登封市| 永德县| 屏东市| 治多县| 墨玉县|