直接贴代码
# include <cstdio>
# include <iostream>
# include <cstring>
# include <algorithm>
using namespace std;
struct sth{
int sum,num;
}e[100010];
struct px{
int x,y;
}a[100010];
int n,m,cnt = 0,lk[100010],r = 1,q[100010];
bool f[100010];
void set(int x,int y){
e[++cnt]={y,lk[x]};
lk[x] = cnt;
}
void dfs(int x)
{
if (f[x])
return;
f[x] = true;
printf("%d ",x);
for (int i = lk[x];i != 0;i = e[i].num)
dfs(e[i].sum);
}
void bfs(int x)
{
q[1] = 1;
f[x] = true;
for (int l = 1;l <= r;l++)
{
printf("%d ",q[l]);
for (int i = lk[q[l]];i != 0;i = e[i].num)
{
if (!f[e[i].sum])
{
q[++r] = e[i].sum;
f[e[i].sum] = true;
}
}
}
}
bool pxd(px a,px b)//结构体排序
{
if (a.y > b.y) return true;
return false;
}
int main()
{
memset(f,false,sizeof(f));
scanf("%d %d",&n,&m);
for (int i = 1;i <= m;i++)
scanf("%d %d",&a[i].x,&a[i].y);
sort(a+1,a+m+1,pxd);//快速排序
for (int i = 1;i <= m;i++)
set(a[i].x,a[i].y);
dfs(1);
printf("\n");
memset(f,false,sizeof(f));
bfs(1);
}
有些地方有点丑见谅
感觉挺对的放上洛谷
5个只过了一个测试点
神犇们快来救救本蒟蒻啊