Cod sursa(job #473291)

Utilizator mihai995mihai995 mihai995 Data 28 iulie 2010 16:18:19
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <fstream>
using namespace std;

struct arc{int x,y;} a[1<<19];
int s[1<<17],n,m,maxim=-1;
bool use[1<<17];

ifstream in("dfs.in");
ofstream out("dfs.out");

int set(int x)
{
	int r=1,i;
	use[x]=true;
	for (i=s[x];i<s[x+1];i++)
		if (!use[a[i].y])
			r+=set(a[i].y);
	return r;
}

bool cmp(arc a,arc b)
{
	return a.x<b.x;
}

int main()
{
	int i,j;
	in>>n>>m;
	for (i=1;i<=m;i++)
	{
		in>>a[i].x>>a[i].y;
		a[i+m].x=a[i].y;
		a[i+m].y=a[i].x;
	}
	m<<=1;
	sort(a+1,a+m+1,cmp);
	for (i=j=1;i<=n;i++)
	{
		for (;j<=m && a[j].x<i;j++);
		s[i]=j;
	}
	s[n+1]=m+1;
	for (i=1;i<=n;i++)
		if (!use[i])
			maxim=max(maxim,set(i));
	out<<maxim<<"\n";
	return 0;
}