[ABC287C] Path Graph?

[ABC287C] Path Graph?

题目大意:给你一张无向图,问你是不是链。

显然,如果一个图是链,必然满足有两个点(端点)度数为 11,其他点度数为 22

但是这样上去是有问题的。

因为这个图不一定连通。

所以我们考虑先判断联通,在考虑是不是链。

做法是,我们就随便找一个点,往两边去遍历,如果能遍历到全部点,那就是连通的。

复杂度为 O(n)O(n),爆锤并查集做法。

#include<bits/stdc++.h>
    using namespace std;
    const int N =1e6+10;
    int total[N],vis[N];
    vector<int> g[N<<1];
    int p;
    void dfs(int u)
    {
    	for(int i=0;i<g[u].size();i++)
    	{
    		int v=g[u][i];
    		if(vis[v]==1)
    			continue;
    		p++;
    		vis[v]=true;
    		dfs(v);
    	}
    }
    int main()
    {
    	int n,m;
    	cin>>n>>m;
    	for(int i=1,u,v;i<=m;i++)
    		cin>>u>>v,g[u].push_back(v),g[v].push_back(u),total[u]++,total[v]++;
    	dfs(1);
    	if(p!=n)
    		cout<<"No"<<endl,exit(0);
    	int sum=0,ans=0;
    	for(int i=1;i<=n;i++)
    	{
    		if(total[i]==1)
    			sum++;
    		if(total[i]==2)
    			ans++;
    	}
    	if(sum==2&&ans==n-2)
    		cout<<"Yes"<<endl;
    	else
    		cout<<"No"<<endl;
    }
posted @   June_Failure  阅读(2)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示