https://vpn.bupt.edu.cn/http/10.105.242.80/problem/p/100/
挺简单的
#include <bits/stdc++.h>
#define FF(a,b) for(int a=0;a<b;a++)
#define F(a,b) for(int a=1;a<=b;a++)
#define LEN 100
#define INF 1000000
#define bug(x) cout<<#x<<"="<<x<<endl;
using namespace std;
typedef long long ll;
typedef struct Node{
int i;
vector<int> c;
}Node;
Node tree[110];
int main()
{
// freopen("./in","r",stdin);
int T;
scanf("%d",&T);
int N,M,a,b;
F(i,T){
printf("Q%d:\n",i);
int in[110]={0};
scanf("%d%d",&N,&M);
F(j,M) tree[j].c.clear();
while(N--){
scanf("%d%d",&a,&b);//b->a
in[a]++;
tree[b].c.push_back(a);
}
int root;
F(j,M) if(in[j]==0) {root=j;break;}
queue<int> q;
q.push(root);
while(!q.empty()){
int sz= q.size();
while(sz--){
int u=q.front();
q.pop();
printf("%d",u);
if(sz) putchar(' ');
else putchar('\n');
vector<int>& v=tree[u].c;
FF(j,v.size())
q.push(v[j]);
}
}
}
return 0;
}