Pagini recente » Cod sursa (job #3364629) | Cod sursa (job #3364630) | Cod sursa (job #3364841) | Cod sursa (job #3364637) | Cod sursa (job #3364840)
use std::fs;
use std::io::{BufWriter, Write};
use std::collections::VecDeque;
fn dfs(node: usize, graph: &Vec<Vec<usize>>, visited: &mut Vec<bool>, ans: &mut Vec<usize>) {
visited[node] = true;
for &son in &graph[node] {
if visited[son] == false {
dfs(son, graph, visited, ans);
}
}
ans.push(node);
}
fn main() {
let file = fs::File::create("sortaret.out").unwrap();
let mut writer = BufWriter::new(file);
let input: String = fs::read_to_string("sortaret.in").unwrap();
let mut tokens = input.split_whitespace();
let mut next_num = || -> usize {
tokens.next().unwrap().parse::<usize>().unwrap()
};
let n = next_num();
let m = next_num();
let mut visited = vec![false; n + 1];
let mut g: Vec<Vec<usize>> = vec![Vec::new(); n + 1];
for _ in 0..m {
let (x, y) = (next_num(), next_num());
g[x].push(y);
}
let mut ans: Vec<usize> = Vec::new();
for node in 1..=n {
if visited[node] == false {
dfs(node, &g, &mut visited, &mut ans);
}
}
for node in ans.iter().rev() {
write!(writer, "{} ", node).unwrap();
}
}