请求加强数据
查看原帖
请求加强数据
750689
CNzzc楼主2024/10/7 09:33

我用样例都没过,没开longlong,dis数组没安全赋值的代码骗了100分

#include<bits/stdc++.h>
#define ll long long
#define endl '\n'
#define up(i,j,k,l) for(int i=j;i<=k;i+=l)
#define down(i,j,k,l) for(int i=j;i>=k;i-=l)
using namespace std;
const int N=1e5+10;
int n,m,q;
vector<int> vc[N];
pair<int,int> d[N];
queue<int> qe;
void spfa()
{
	d[1].second=0;
	qe.push(1);
	int u;
	while(!qe.empty()){
		u=qe.front();
		qe.pop();
		for(auto fw:vc[u]){
			if(d[fw].first>d[u].second+1 || d[fw].second>d[u].first+1){
				if(d[fw].first>d[u].second+1){
					d[fw].first=d[u].second+1;
				}
				if(d[fw].second>d[u].first+1){
					d[fw].second=d[u].first+1;
				}
				qe.push(fw);
			}
		}
	}
	return;
}
void solve()
{
	cin>>n>>m>>q;
	int u,v;
	up(i,1,m,1){
		cin>>u>>v;
		vc[u].push_back(v);
		vc[v].push_back(u);
		d[i].first=0X3f3f3f3f;
		d[i].second=0x3f3f3f3f;
	}
	spfa();
	up(i,1,q,1){
		cin>>u>>v;
		if(v%2==0){
			if(d[u].second<=v){
				cout<<"Yes";
			}
			else{
				cout<<"No";
			}		
		}
		else{
			if(d[u].first<=v){
				cout<<"Yes";
			}
			else{
				cout<<"No";
			}		
		}
		cout<<endl;
	}
	return;
}
int main()
{
    //ios::sync_with_stdio(false);
	//cin.tie(0);
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	int _=1;
	//cin>>_;
	up(i,1,_,1){
		solve();
	}
	return 0;
}
2024/10/7 09:33
加载中...