Pagini recente » Cod sursa (job #3154051) | Cod sursa (job #1161768) | Cod sursa (job #1961667) | Cod sursa (job #1231457) | Cod sursa (job #2217749)
#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;
int conex[NMAX];
vector <int> vecini[NMAX];
int maxim = 0, nodMax = 0;
queue <int> chain;
void Read(void)
{
fin >> n >> m;
int a, b;
for (int i = 0; i < m; i++)
{
conex[i + 1]++;
fin >> a >> b;
vecini[a].push_back(b);
conex[a]++; conex[b]++;
if (maxim < conex[a])
{
maxim = conex[a];
nodMax = a;
}
if (maxim < conex[b])
{
maxim = conex[b];
nodMax = b;
}
}
}
void LongestChain(void)
{
int node , currNode;
bool wasCrossed[NMAX] = { false };
maxim = 0;
chain.push(nodMax);
wasCrossed[nodMax] = true;
maxim++;
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])
{
maxim++;
wasCrossed[node] = true;
chain.push(node);
}
}
}
}
int main(void)
{
Read();
LongestChain();
fout << maxim;
return 0;
}