社区讨论

求问关于迭代器的语法错误QWQ

P8819[CSP-S 2022] 星战参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mhj3ovtq
此快照首次捕获于
2025/11/03 20:12
4 个月前
此快照最后确认于
2025/11/03 20:12
4 个月前
查看原帖
在solve1和solve3中的"int nv=(*it).first 都报错了,说it没定义,为什么?怎么改?求QWQ
CPP
#include<bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define PII pair<int,int>
using namespace std;

const int N=5e5+10;
int n,m,q;
vector<PII> g[N],fan_g[N];

void check()
{
	for(int u=1;u<=n;u++)
	{
		int cnt=0;
		for(PII t:g[u])
		{
			int v=t.first,w=t.second;
			if(w==1)
			{
				for(PII p:fan_g[v])
				{
					int fan_u=p.first,fan_w=p.second;
					if(fan_u==u && fan_w==1) cnt++;
				}
			}
		}
		if(cnt!=1)
		{
			printf("NO");
			return;
		}
	}
	printf("YES");
	return;
}

void solve1()
{
	int u,v;
	scanf("%d%d",&u,&v);
	for(auto it=g[u].begin();it!=g[u].end();it++);
	{
		int nt=(*it).first;
		if(v==nv) (*it).second=0;
	}
	for(auto it=fan_g[v].begin();it!=fan_g[v].end();it++);
	{
		int nu=(*it).first;
		if(u==nu) (*it).second=0;
	}
	check();
	return;
}

void solve2()
{
	int u;
	scanf("%d",&u);
	for(auto it=fan_g[u].begin();it!=fan_g[u].end();it++)
	{
		(*it).second=0;
	}
	check();
	return;
}

void solve3()
{
	int u,v;
	scanf("%d%d",&u,&v);
	for(auto it=g[u].begin();it!=g[u].end();it++);
	{
		int nv=(*it).first;
		if(v==nv) (*it).second=1;
	}
	for(auto it=fan_g[v].begin();it!=fan_g[v].end();it++);
	{
		int nu=(*it).first;
		if(u==nu) (*it).second=1;
	}
	check();
	return;
}

void solve4()
{
	int u;
	scanf("%d",&u);
	for(auto it=fan_g[u].begin();it!=fan_g[u].end();it++)
	{
		(*it).second=1;
	}
	check();
	return;
}


int main()
{
	scanf("%d%d",&n,&m);
	while(m--)
	{
		int u,v;
		scanf("%d%d",&u,&v);
		g[u].push_back({v,1});
		fan_g[v].push_back({u,1});
	}
	scanf("%d",&q);
	int t;
	while(q--)
	{
		scanf("%d",&t);
		if(t==1) solve1();
		if(t==2) solve2();
		if(t==3) solve3();
		if(t==4) solve4();
	}
	return 0;
}











//----------------------------------------

回复

1 条回复,欢迎继续交流。

正在加载回复...