
// YBT1336
#include<bits/stdc++.h>
using namespace std;
const int N = 200;
int fa[N],cnt[N];
vector<int> g[N];
int find(int x) { // 寻找某节点的祖先
if (fa[x] == x) return x;
return find(fa[x]);
}
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++) fa[i]=i; // 初始每个节点父亲都是自己
for(int i=1;i<=m;i++){
int x,y;
cin>>x>>y;
fa[y]=x; // 将y的父亲设为x
cnt[x]++; // x的儿子数+1
g[x].push_back(y); // 将y加入x的儿子列表
}
cout<<find(1)<<endl;// 随意从任意节点都可寻找到祖先
int ans = 1,cmp = 0; // ans为孩子最多的节点,cmp为孩子最多的节点的儿子数
for(int i=1;i<=n;i++){
if(cnt[i] > cmp){ // 打擂台
cmp = cnt[i];
ans = i;
}
}
cout<<ans<<endl; // 输出孩子最多的节点
for(int i=0;i<g[ans].size();i++){
cout<<g[ans][i]<<" "; // 输出孩子最多的节点的儿子
}
return 0;
}
文章评论
网页好难整、