题目描述
blablabla
样例
blablabla
算法1
Java 代码
import java.util.*;
import java.util.stream.*;
import java.io.*;
class Main{
static int n, m;
static int[] in;
static Map> map = new HashMap<>();
static Queue q;
public static void main(String[] args) throws IOException {
BufferedReader b = new BufferedReader(new InputStreamReader(System.in));
String[] s = b.readLine().split("\\s+");
n = Integer.parseInt(s[0]);
m = Integer.parseInt(s[1]);
q = new LinkedList<>();
in = new int[n+1];
for(int i = 1; i <= n ; i++) map.put(i, new ArrayList<>());
for (int i = 0 ; i < m ; i++){
String[] e = b.readLine().split("\\s+");
int x = Integer.parseInt(e[0]);
int y = Integer.parseInt(e[1]);
map.get(x).add(y);
in[y]++;
}
String res = topSort();
System.out.println(res == null ? "-1": res);
}
private static String topSort(){
List res = new ArrayList<>();
for(int i = 1; i <= n; i++){
if(in[i] == 0){
q.add(i);
}
}
while(!q.isEmpty()){
int node = q.poll();
res.add(node);
List list = map.get(node);
for (int i = 0; i < list.size(); i++){
int p = list.get(i);
if(--in[p] == 0) q.add(p);
}
}
if (res.size() != n) return null;
return res.stream().map(x->String.valueOf(x)).collect(Collectors.joining(" "));
}
}