社区讨论
震惊!洛谷鄙视前向星
灌水区参与者 5已保存回复 11
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 9 条
- 当前快照
- 1 份
- 快照标识符
- @m0rxze7l
- 此快照首次捕获于
- 2024/09/07 17:27 2 年前
- 此快照最后确认于
- 2024/09/07 18:52 2 年前
邻接表的记录
(但是教练的)
邻接表可以过,
前向星过不了!!!
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],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;
}
回复
共 11 条回复,欢迎继续交流。
正在加载回复...