社区讨论

为什么前向星全部RE?

灌水区参与者 1已保存回复 1

讨论操作

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

当前回复
1 条
当前快照
1 份
快照标识符
@m0rwzoyo
此快照首次捕获于
2024/09/07 17:00
2 年前
此快照最后确认于
2024/09/07 17:09
2 年前
查看原帖
这题下载数据的话是对的,但在洛谷里RE
CPP
#include <bits/stdc++.h>
#define int long long
#define f1(i,a,b) for(int i=a;i<=b;i++)
#define f2(i,a,b) for(int i=a;i>=b;i--)
#define ff(e,u) for(int e=h[u];e;e=nxt[e])
using namespace std;
const int N=1e5+5;
const int mod=80112002;
int read()
{
	int x=0,f=1;
	char ch=getchar();
	while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
	while(isdigit(ch)){x=x*10+(int)(ch-'0');ch=getchar();}
	return x*f;
}

int h[N],to[N],nxt[N],w[N],in[N],out[N],f[N],cnt;

int add(int u,int v)
{
	to[++cnt]=v;
	nxt[cnt]=h[u];
	h[u]=cnt;
}
int n,m;
int ans=0;
int num[N];
void bfs()
{
	queue<int> q;
	int u,v;
	f1(i,1,n)
	{
		if(!in[i])
		{
			q.push(i);
			num[i]=1;
		}
	}	
	while(!q.empty())
	{
		u=q.front();q.pop();
		ff(e,u)
		{
			v=to[e];
			num[v]=(num[v]+num[u])%mod;
			in[v]--;
			if(!in[v])q.push(v);
		}
	}
	f1(i,1,n)if(!out[i])ans+=(num[i]%mod);
}
signed main()
{
	n=read();m=read();
	for(int i=1;i<=m;i++)
	{
		int u=read();int v=read();
		add(u,v);
		in[v]++;out[u]++;
	}
	bfs();
	cout<<ans;
	return 0;
}


回复

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

正在加载回复...