RE求助
查看原帖
RE求助
677489
Aaron530楼主2024/10/5 17:36
#include <bits/stdc++.h>
using namespace std;
int n,m,k;
int du[100005];
int book[100005],instk[100005];
vector <int> e[100005],ans[100005];
stack <int> stk;
int del(int x,int y)
{
	for(int i=0;i<e[x].size();i++)
		if(e[x][i]==y)
		{
			e[x].erase(e[x].begin()+i);
			break;
		}
	for(int i=0;i<e[y].size();i++)
		if(e[y][i]==x)
		{
			e[y].erase(e[y].begin()+i);
			break;
		}
}
void dfs(int x)
{
	book[x]=1;
	for(int i=0;i<e[x].size();i++)
	{
		int y=e[x][i];
		del(x,y);
		dfs(y);
	}
	if(instk[x]==1)
	{
		k++;
		stk.push(x);
		while(!stk.empty())
		{
			int t=stk.top();
			ans[k].push_back(t);
			stk.pop();
		}
		return ;
	}
	else
	{
		stk.push(x);
		instk[x]=1;
	}
	return ;
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		int a,b,s,t;
		scanf("%d%d%d%d",&a,&b,&s,&t);
		if(s!=t)
		{
			e[a].push_back(b);
			e[b].push_back(a);
			du[a]++,du[b]++;
		}
	}
	for(int i=1;i<=n;i++)
		if(du[i]%2==1)
		{
			cout<<"NIE";
			return 0;
		}
	for(int i=1;i<=n;i++)
		if(book[i]==0)
		{
			memset(instk,0,sizeof instk);
			dfs(i);
		}
	cout<<k<<endl;
	for(int i=1;i<=k;i++)
	{
		cout<<ans[i].size()-1<<" ";
		for(int j=0;j<ans[i].size();j++)
			cout<<ans[i][j]<<" ";
		cout<<endl;
	}
	return 0;
}

这个代码是哪里出错了

2024/10/5 17:36
加载中...