Pagini recente » Cod sursa (job #7472) | Monitorul de evaluare | Cod sursa (job #1351875) | Cod sursa (job #2285597) | Cod sursa (job #473291)
Cod sursa(job #473291)
#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;
}