noip2019集训测试赛(十三)A.Fairy

Description

给定n个点,m条边的无向图(无自环),可以从图中删除一条边,问删除哪些边可以使图变成一个二分图。


Input

第1行包含两个整数n,m,分别表示点数和边数。

第2~m+1行每行两个数x,y,表示有一条边连接点x,y。


Output

第一行两个整数,表示能删除的边的个数。

接下来一行按照从小到大的顺序输出能删除的边的编号。


Solution

这题的弱化版:https://blog.csdn.net/tylon2006/article/details/100556029

简直就是无脑CDQ,直接加边。。。


Code

#include<bits/stdc++.h>
using namespace std;
int f[2000010],siz[2000010],col[2000010],top,cnt,res,n,m;
int edge[2000010][2];
bool ans[2000010];
struct data{
   
    int u,v,fau,fav,colu,colv,sizu,sizv;
}stk[2000010],tmp;
int find(int x){
   
    if(x!=f[x]) return find(f[x]);
    return x;
}
int findcol(int x){
   
    if(x==f[x]) return 0;
    return col[x]^findcol(f[x]); 
}
bool</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值