【CCPC-Wannafly Winter Camp Day4 (Div1) C】最小边覆盖(简单题)

点此看题面

大致题意: 给你一个边集的子集,问你这可不可能是这张图的最小边覆盖。

大致思路

考虑到,如果一条边连接的两个点度数都大于等于\(2\),则这条边完全可以删去。

因此,我们只要判断是否存在这样的边,就可以判断这个边集有没有可能是这张图的最小覆盖了。

代码

#include<bits/stdc++.h>
#define Tp template<typename Ty>
#define Ts template<typename Ty,typename... Ar>
#define Reg register
#define RI Reg int
#define Con const
#define CI Con int&
#define I inline
#define W while
#define N 200000
using namespace std;
int n,m,a[N+5],b[N+5],deg[N+5];
class FastIO
{
    private:
        #define FS 100000
        #define tc() (A==B&&(B=(A=FI)+fread(FI,1,FS,stdin),A==B)?EOF:*A++)
        #define tn (x<<3)+(x<<1)
        #define D isdigit(c=tc())
        char c,*A,*B,FI[FS];
    public:
        I FastIO() {A=B=FI;}
        Tp I void read(Ty& x) {x=0;W(!D);W(x=tn+(c&15),D);}
        Ts I void read(Ty& x,Ar&... y) {read(x),read(y...);}
}F;
int main()
{
    RI i;for(F.read(n,m),i=1;i<=m;++i) F.read(a[i],b[i]),++deg[a[i]],++deg[b[i]];//统计度数
    for(i=1;i<=m;++i) if(deg[a[i]]>=2&&deg[b[i]]>=2) return puts("No"),0;return puts("Yes"),0;//判断是否存在不合法情况
}

转载于:https://www.cnblogs.com/chenxiaoran666/p/CometOJDay4Div1C.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值