トポロジカルソート
vviのグラフを入れるとviの順番が返ってくる
vector<int> tpr(vector<vector<int>> v){
int n = v.size();
vector<int>ans;
vector<int> cnt(n,0);
for(int i = 0;i < n;i++){
for(int j : v[i]){
cnt[j]++;
}
}
queue<int> q;
for(int i = 0;i < n;i++){
if(cnt[i]==0)q.push(i);
}
while(q.size()!=0){
int pos = q.front();
ans.push_back(pos);
q.pop();
for(int i : v[pos]){
cnt[i]--;
if(cnt[i]==0){
q.push(i);
}
}
}
return ans;
}