80WA求助 思路:判断是否是棵树
  • 板块P2307 迷宫
  • 楼主CYJ331
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/7/28 17:05
  • 上次更新2024/7/28 18:34:32
查看原帖
80WA求助 思路:判断是否是棵树
818995
CYJ331楼主2024/7/28 17:05
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+1;
vector<int> edges[N];
int ok,dist[N];
inline void clear(){for(int i=1;i<N;i++)edges[i].clear();}
inline void dfs(int x,int pre){
    if(!ok)return ;
    for(int i=0;i<edges[x].size();i++){
        if(edges[x][i]!=pre){
            if(dist[edges[x][i]]){
                ok=false;
                return ;
            }
            dist[edges[x][i]]=true;
            dfs(edges[x][i],x);
        }
    }
}
int main(){
    int x,y;
    while(true){
        clear(),ok=true;
        memset(dist,0,sizeof(dist));
        scanf("%d%d",&x,&y);
        if(x==-1&&y==-1)return 0;
        edges[x].push_back(y);
        edges[y].push_back(x);
        int k=x;
        while(scanf("%d%d",&x,&y)==2){
            if(x==0&&y==0)break;
            edges[x].push_back(y);
            edges[y].push_back(x);
        }
        dist[k]=1;
        dfs(k,-1);
        printf("%d\n",ok);
    }
    return 0;
}
2024/7/28 17:05
加载中...