Cod sursa(job #2217749)

Utilizator AlexDabuDabu Alexandru AlexDabu Data 2 iulie 2018 00:08:39
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#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;
}