1 条题解

  • 0
    @ 2024-6-9 21:36:22
    #include <bits/stdc++.h>
    #define ll long long
    using namespace std;
    const int N=100005;
    int n,m,k,s,t,qq,d[N][2];
    vector<int> e[N];
    queue<pair<int,int>> q;
    void spfa(){
    	memset(d,0x3f,sizeof(d));
    	d[1][0]=0;
    	q.push({1,0});
    	while (!q.empty()){
    		int x=q.front().first;
    		int y=q.front().second;
    		q.pop();
    		for (int &v:e[x]){
    			if (d[v][y^1]>d[x][y]+1){
    				d[v][y^1]=d[x][y]+1;
    				q.push({v,y^1});
    			}
    		}
    	}
    }
    
    int main(){
    //	freopen("in.txt","r",stdin);
    //	freopen("out.txt","w",stdout);
    	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    	cin>>n>>m>>qq;
    	for (int i=1;i<=m;++i){
    		cin>>s>>t;
    		e[s].push_back(t);
    		e[t].push_back(s);
    	}
    	spfa();
    	while (qq--){
    		cin>>s>>t;
    		cout<<(d[s][t&1]<=t?"Yes\n":"No\n");
    	} 
    }
    
    • 1

    信息

    ID
    808
    时间
    1000ms
    内存
    250MiB
    难度
    10
    标签
    递交数
    7
    已通过
    3
    上传者