最后四个点超时,疑似存图存了个死循环。一上大数据就崩了,小数据没事。
查看原帖
最后四个点超时,疑似存图存了个死循环。一上大数据就崩了,小数据没事。
118630
Lube楼主2020/6/18 21:11
#include<bits/stdc++.h>
using namespace std;
int n,m,q;
int to[100005],next[100005],head[100005],tot;
int dp[100005][2];
int a[200005][2],front,rear;
int main()
{
	scanf("%d%d%d",&n,&m,&q);
	for(int i=1;i<=m;i++)
	{
		int g1,g2;scanf("%d%d",&g1,&g2);
		to[++tot]=g2;next[tot]=head[g1];head[g1]=tot;
		to[++tot]=g1;next[tot]=head[g2];head[g2]=tot;
	}
	a[front][0]=1;a[front][1]=0;dp[1][0]=2100000000;
	while(front<=rear)
	{
		int x=a[front][0],len=a[front][1];
		for(int i=head[x];i;i=next[i])
		{
			int y,lenth;y=to[i];lenth=len+1;
			if(dp[y][lenth&1])continue;
			rear++;
			a[rear][0]=y;a[rear][1]=dp[y][lenth&1]=lenth;
		}
		front++;
	}
	dp[1][0]=0;	
	for(int i=1;i<=q;i++)
	{
		int x,y;scanf("%d%d",&x,&y);
		if(dp[x][y&1]>y||(x!=1&&!dp[x][y&1])||(x==1&&y==1&&dp[1][1]==0))printf("No\n");
		else printf("Yes\n");
	}
}
2020/6/18 21:11
加载中...