Pagini recente » Cod sursa (job #2564399) | Cod sursa (job #2367318) | Cod sursa (job #2570026) | Cod sursa (job #2555479) | Cod sursa (job #1705690)
#include <stdio.h>
#include <string.h>
#include <vector>
#include <stack>
#define MAX_NODES 100000
std::vector<int> adj_list[MAX_NODES + 1];
std::stack<int> s;
int d[MAX_NODES + 1];
int f[MAX_NODES + 1];
int timp;
void explore(int curr_node, int visited[]) {
visited[curr_node] = 1;
d[curr_node] = timp++;
for (auto &adj_node : adj_list[curr_node]) {
if (!visited[adj_node]) {
explore(adj_node, visited);
}
}
f[curr_node] = timp++;
s.push(curr_node);
}
void dfs(int num_nodes, int visited[]) {
int cc = 0;
for (int i = 1; i <= num_nodes; i++) {
visited[i] = 0;
}
for (int i = 1; i <= num_nodes; i++) {
if (!visited[i]) {
explore(i, visited);
}
}
}
int main(void) {
FILE * fin = fopen("sortaret.in", "r");
FILE * fout = fopen("sortaret.out", "w");
int n, m, x, y;
fscanf(fin, "%d%d", &n, &m);
int visited[n + 1];
for (int i = 0; i < m; i++) {
fscanf(fin, "%d%d", &x, &y);
adj_list[x].push_back(y);
adj_list[y].push_back(x);
}
dfs(n, visited);
while (!s.empty()) {
fprintf(fout, "%d ", s.top());
s.pop();
}
fprintf(fout, "\n");
fclose(fin);
fclose(fout);
}