Pagini recente » Cod sursa (job #603350) | Cod sursa (job #1731870) | Cod sursa (job #2854554) | Istoria paginii summer-challenge-2019/solutii/alambicare | Cod sursa (job #798291)
Cod sursa(job #798291)
#include <fstream>
#include <stack>
#include <vector>
using namespace std;
ifstream fin("dfs.in");
ofstream fout("dfs.out");
const int MAX_N = 100010;
vector<int> graf[MAX_N];
stack<int> st;
bool visited[MAX_N];
int N, M;
int dfs(int node);
int main(int argc, char const *argv[])
{
fin >> N >> M;
for (int i = 0; i < M; ++i) {
int x, y;
fin >> x >> y;
graf[x].push_back(y);
graf[y].push_back(x);
}
int result = 0;
for (int i = 1; i <= N; ++i) {
while (visited[i] == true) ++i;
if (i > N) break;
visited[i] = true;
int d = dfs(i);
result = d > result ? d : result;
}
fout << result;
return 0;
}
int dfs(int node) {
int gs = 0;
st.push(node);
while (!st.empty()) {
int t = st.top();
st.pop();
// fout << t << ' ';
++gs;
for (int i = 0; i < graf[t].size(); ++i) {
if (!visited[graf[t][i]]) {
st.push(graf[t][i]);
visited[st.top()] = true;
}
}
}
// fout << endl << gs << endl << endl;
return gs;
}