WA on #23
  • 板块CF19E Fairy
  • 楼主linjingxiang
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/12/21 15:48
  • 上次更新2024/12/21 19:35:36
查看原帖
WA on #23
558877
linjingxiang楼主2024/12/21 15:48
#include<bits/stdc++.h>
#define maxn 10005
#define pb push_back
using namespace std;
int n,m,cnt,ans[maxn],sum[maxn],cf[maxn],s[maxn],st,f[maxn],dep[maxn],res[maxn];
vector<int>to[maxn],num[maxn];
bool vis[maxn],vis2[maxn];
inline void dfs(int u,int fa){
	f[u]=fa,dep[u]=dep[fa]+1;
	for(int i=0;i<to[u].size();i++){
		int v=to[u][i];
		if(v==fa)continue;
		if(vis[v]){
			if(dep[u]>dep[v])continue;
			if((dep[u]-dep[v])%2==0)cnt++,cf[v]++,cf[u]--,res[num[u][i]]=1;
			else cf[v]--,cf[u]++,res[num[u][i]]=-1;
		}
		else vis[v]=1,dfs(v,u);
	}
}
inline void dfs2(int u){
	for(int i=0;i<to[u].size();i++){
		int v=to[u][i];
		if(!vis2[v])vis2[v]=1,sum[v]=ans[num[u][i]]=sum[u]+cf[u],dfs2(v);
	}
}
int main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	cin>>n>>m;
	for(int u,v,i=1;i<=m;i++)cin>>u>>v,to[u].pb(v),to[v].pb(u),num[u].pb(i),num[v].pb(i);
	for(int i=1;i<=n;i++)if(!vis[i])vis[i]=1,vis2[i]=1,dfs(i,0),dfs2(i);
	for(int i=1;i<=m;i++)if(sum[i]+res[i]==cnt||cnt==0)s[++st]=i;
	cout<<st<<'\n';
	for(int i=1;i<=st;i++)cout<<s[i]<<' ';
}
2024/12/21 15:48
加载中...