来自一个蒟蒻的问题
  • 板块题目总版
  • 楼主wangrunyang
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/2 13:56
  • 上次更新2024/8/2 14:50:30
查看原帖
来自一个蒟蒻的问题
1052626
wangrunyang楼主2024/8/2 13:56

题目

给定一张无向图,有N个点,M条边,第i条边连接 u[i]和v[i]。

请你判断这个图是否为一条链。

蒟蒻的WA思路

首先判断有无重边或自环

其次把每个点连接的点数记下来,判断是不是有两个末端的只连接一个点,剩下n-2个点连接两边两个点。

代码

#include <bits/stdc++.h>
using namespace std;

int a[200011];
set <pair <int , int> > se;

int main(){
    int n , m;
    cin >> n >> m;
    for(int i = 0;i < m;i++){
        int b , c;
        cin >> b >> c;
        if(b < c) swap(b , c);
        if(b == c){
        	cout << "No\n";
        	return 0;
		}
		if(se.count({b , c})){
			cout << "No\n";
			return 0;
		}
		se.insert({b , c});
        a[b]++;
        a[c]++;
    }
    int cnt1 = 0;
    int cnt2 = 0;
    for(int i = 1;i <= n;i++){
        if(a[i] == 1) cnt1++;
        if(a[i] == 2) cnt2++;
    }
    cout << ((cnt1 == 2 && cnt2 == n - 2)? "Yes\n" : "No\n");
    return 0;
}

麻烦大佬们帮忙找找反例,或是找出方法的漏洞,谢谢!

2024/8/2 13:56
加载中...