Pagini recente » Cod sursa (job #2186916) | Cod sursa (job #1831925) | Cod sursa (job #1984057) | Cod sursa (job #1919418) | Cod sursa (job #2218232)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
#define NMAX 100002
ifstream fin("dfs.in");
ofstream fout("dfs.out");
int n, m;
vector <int> vecini[NMAX];
int maxim = 0;
queue <int> chain;
void Read(void)
{
fin >> n >> m;
int a, b;
for (int i = 0; i < m; i++)
{
fin >> a >> b;
vecini[a].push_back(b);
vecini[b].push_back(a);
}
}
void LongestChain(void)
{
int node, currNode, currLength;
bool wasCrossed[NMAX] = { false };
maxim = 0;
for (int i = 1; i <= n; i++)
{
currLength = 0;
if (!wasCrossed[i])
{
chain.push(i);
wasCrossed[i] = true;
currLength++;
while (!chain.empty())
{
currNode = chain.front();
chain.pop();
for (unsigned int i = 0; i < vecini[currNode].size(); i++)
{
node = vecini[currNode].at(i);
if (!wasCrossed[node])
{
currLength++;
wasCrossed[node] = true;
chain.push(node);
}
}
}
}
if (currLength > maxim)
{
maxim = currLength;
}
}
}
int main(void)
{
Read();
LongestChain();
fout << maxim;
return 0;
}