ABC404C题解

简单题,直接 DFS 扫一遍,看有没有经过重复点并且这时其它点都已经走过即可。
代码:

#include<bits/stdc++.h>
using namespace std;
const int N = 2e5+5;
vector<int>e[N];
int vis[N];
int n,m;
void dfs(int x,int fa)
{
    for(auto v:e[x])
    {
        if(v!=fa&&vis[v])
        {
            int flag = 0;
            for(int i = 1;i<=n;i++)
            {
                if(!vis[i])
                {
                    flag = 1;
                    break;
                }
            }
            if(!flag)
            {
                printf("Yes");
            }
            else
            {
                printf("No");
            }
            exit(0);
        }
        else if(v!=fa)
        {
            vis[v] = 1;
            dfs(v,x);
        }
    }
}
signed main()
{
    scanf("%d %d",&n,&m);
    for(int i = 1;i<=m;i++)
    {
        int x,y;
        scanf("%d %d",&x,&y);
        e[x].push_back(y);
        e[y].push_back(x);
    }
    vis[1] = 1;
    dfs(1,0);
    printf("No");
    return 0;
}
posted @ 2025-05-04 18:32  林晋堃  阅读(40)  评论(0)    收藏  举报