Pagini recente » Cod sursa (job #2425748) | Cod sursa (job #2376131) | Cod sursa (job #3238869) | Cod sursa (job #752220) | Cod sursa (job #2305326)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("turn1.in");
ofstream fout("turn1.out");
int n,k,t[10002],c[10002];
void Union(int x,int y)
{
t[y] = x;
c[x] += c[y];
}
int FindRoot(int x)
{
int rad,y;
rad = x;
while(t[rad] != 0)
rad = t[rad];
while(x!=rad)
{
y=t[x];
t[x]=rad;
x=y;
}
return rad;
}
int main()
{
int i , x, y, maxim1, maxim2, poz1, poz2;
fin >>n >>k;
for(i = 1;i <= n; i++)
c[i] = 1;
for(i = 1;i <= k; i++)
{
fin >>x >>y;
x = FindRoot(x);
y = FindRoot(y);
if(x!=y)
Union(x,y);
}
maxim1 =maxim2 =0;
poz1 =poz2 =1;
for(i = 1;i <= n;i++)
if(t[i] == 0)
{
if(c[i] > maxim1)
{
maxim2 = maxim1;
poz2 = poz1;
maxim1 = c[i];
poz1 = i;
}
else if(c[i] > maxim2)
{
maxim2 = c[i];
poz2 = i;
}
}
fout<< poz1 << " " << poz2 << "\n";
return 0;
}