记录一下未解决的错误代码
#include <iostream>
#include <cstring>
#include <vector>
#include <queue>
using namespace std;
const int N = 100010;
int tot, head[N], n, m, indegree[N];
struct Edge{
int v, next;
}edge[N];
bool vis[N];
void add(int u, int v){
edge[tot].v = v;
edge[tot].next = head[u];
head[u] = tot ++;
}
vector<int> vec;
void topsort(){
priority_queue<int, vector<int>, greater<int> >pq;
for(int i = 1; i <= n; i ++)
if(indegree[i] == 0)
pq.push(i);
while(pq.size()){
int t = pq.top();
vec.push_back(t);
pq.pop();
for(int i = head[t]; i != -1; i = edge[i].next){
int to = edge[i].v;
indegree[to] --;
if(indegree[to] == 0)
pq.push(to);
}
}
}
int main(){
int t;
cin >> t;
ios::sync_with_stdio(false);
while(t --){
vec.clear();
memset(vis, 0, sizeof vis);
memset(indegree, 0, sizeof indegree);
memset(head, -1, sizeof head);
tot = 0;
cin >> n >> m;
for(int i = 1; i <= m; i ++){
int a, b;
cin >> a >> b;
vis[a] = true;
vis[b] = true;
add(a, b);
indegree[b] ++;
}
topsort();
int size = vec.size();
for(int i = 0; i < size; i ++)
cout << vec[i] << ' ';
for(int i = 1; i <= n; i ++)
if(!vis[i])
cout << i << ' ';
cout << endl;
}
return 0;
}