fork(1) download
#include <bits/stdc++.h>
#include <iostream>
#define MOD 1000000007//10e9+7;
#define MAX 1000003
#define T() int t; scanf("%d",&t);while(t--)
#define FOR(i,a,b) for(int (i) = (a); (i) < (b); (i)++)
#define RFOR(i,a,b) for(int (i) = (a)-1; (i) >= (b); (i)--)
#define CLEAR(a) memset((a),0,sizeof(a))
#define all(v) v.begin(), v.end()
#define si(x) scanf("%d",&x)
#define sll(x) scanf("%lld",&x)
#define pi(x) printf("%d\n",x)
#define pll(x) printf("%lld\n",x)
#define fi first
#define se second
#define pb push_back
#define mp make_pair

using namespace std;

typedef long long int ll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;

int main() 
{
	int n,m,u,v;
	si(n);si(m);
	vi g[n+1];
	FOR(i,0,m)
	{
		si(u);si(v);
		g[u].pb(v);
		g[v].pb(u);
	}
	bool visited[n+1];
	memset(visited,false,sizeof(visited));
	stack<int> s;
	int ans,count,k;
	ans=0;
	FOR(i,1,n+1)
	{
		count=0;
		if(!visited[i])
		{
			s.push(i);
			while(!s.empty())
			{
				k = s.top();
				s.pop();
				for(int j=0;j<g[k].size();j++)
				{
					if(!visited[g[k][j]])
					{
						count++;
						s.push(g[k][j]);
						visited[g[k][j]]=true;
					}
				}
			}
			ans = max(ans,count);
			
		}
	}
	pi(ans);
	return 0;
}
Success #stdin #stdout 0s 15240KB
stdin
6 3
1 2
2 3
4 5
stdout
3