求助第2个点答案对了过不了
查看原帖
求助第2个点答案对了过不了
215389
我是大帅逼69楼主2020/5/31 20:47

40分 2 4 5点错了. 第2个点我试了答案是对的就a不了

#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cmath>
#include<map>
#include<queue> 
#include<set>
#include<stack>
using namespace std;
const int MAXN=1000000; 
const int INF=100003;
int tot=0; 
struct Node
{
	int to,next;
}e[MAXN*4];
int n,m,vis[MAXN+10],head[MAXN+10],ans[MAXN+10],cl[MAXN+10];
queue<int> a;
void add(int x,int y)
{
	e[++tot].next=head[x];
	e[tot].to=y;
	head[x]=tot;
}
void BFS()
{
	int index=1,z=1;
	while(!a.empty())
    {
    	int c=a.front();
    	a.pop();
    	for(int i=head[c];i;i=e[i].next)
    	{
    		int v=e[i].to;
    		if(!vis[v]) 
    		{
    			if(c==index)
    	        {
				z++;
				index=v;
			    }
    			a.push(v);
    			vis[v]=1;
    			cl[v]=z;
			}
			if(cl[c]+1==cl[v])
    		ans[v]=(ans[v]+ans[c])%INF; 
		}
	}
}
int main()
{
	cin>>n>>m; 	
	memset(ans,0,sizeof(ans));
	memset(vis,0,sizeof(vis));
	memset(cl,0,sizeof(cl));
	memset(head,0,sizeof(head));
	for(int i=0;i<m;i++)
	{
		int x,y;
		cin>>x>>y;
		add(x,y);
		add(y,x); 
	}
	ans[1]=1;
	vis[1]=1;
	cl[1]=1;
	a.push(1);
	BFS();
	for(int i=1;i<=n;i++)
    {
     cout<<ans[i]<<endl;
	}
}  
2020/5/31 20:47
加载中...