前链式存图,4WA,求助
查看原帖
前链式存图,4WA,求助
470459
半杯星光楼主2021/7/15 09:00
#include<iostream>
#include<vector>
using namespace std;
#define N 1010
vector<int>H[N];
struct Edge
{
    int to;
    int next;
}E[N];
int Head[N];
int vis[N];
void BFS()
{
    int Stack[N];
    int bottom = 1;
    int top = 1;
    Stack[++top] = 1;
    while (top>=bottom)
    {
        int x = Stack[++bottom];
        vis[x] = 1;
        printf("%d ",x);
        for (int i = Head[x]; i; i = E[i].next)
        {
            if(!vis[E[i].to])
            Stack[++top] = E[i].to;
        }
    }
}
void DFS(int x)
{
    printf("%d ",x);
    vis[x] = 1;
    for (int i = Head[x]; i; i = E[i].next)
    {
        if(!vis[i]) DFS(E[i].to);
    }
}
int cnt;
void ADDEdge(int from,int to)
{
    cnt++;
    E[cnt].next = Head[from];
    E[cnt].to = to;
    Head[from] = cnt;
}
int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    int x,y;
    for(int i = 1;i <= m;i++)
    {
        scanf("%d%d",&x,&y);
        H[x].push_back(y);
    }
    for (int i = 1; i <= n; i++)
    {
        sort(H[i].begin(),H[i].end());
        for(int j = 0;j < H[i].size();j++)
        ADDEdge(i,H[i][j]);
    }
    DFS(1);
    BFS();
    return 0;
}
2021/7/15 09:00
加载中...