救命求助爆零
查看原帖
救命求助爆零
1020566
prg_equal_depressed楼主2024/12/7 09:05
#include <iostream>
#include <queue>
#include <vector>
#include <cstring>
using namespace std;
int n,m,k,dis[100005][2],vis[100005][2];
vector<int> g[100005];
void bfs(int cur){
	queue<pair<int,int> > q;
	memset(dis,0x3f,sizeof(dis));
	memset(vis,0,sizeof(vis));
	q.push({1,0});
	dis[cur][0]=0;
	vis[cur][0]=1;
	while (!q.empty()){
		int v=q.front().first;
		int d=q.front().second;
		q.pop();
		for (int i=0;i<g[v].size();i++){
			if (!vis[g[v][i]][1-d%2]){
				dis[g[v][i]][1-d%2]=dis[v][d]+1;
				vis[g[v][i]][1-d%2]=1;
				q.push({g[v][i],1-d%2});
			}
		}
	}
}
int main(){
	cin>>n>>m>>k;
	for (int i=1;i<=m;i++){
		int x1,x2;
		cin>>x1>>x2;
		g[x1].push_back(x2);
		g[x2].push_back(x1);
	}
	while (k--){
		int x1,x2,x3;
		cin>>x1>>x2>>x3;
		bfs(x1);
		if (x3>=dis[x2][x3%2]&&(x2-dis[x1][x2%2]%2)==0) cout<<"TAK"<<endl;
		else cout<<"NIE"<<endl;
	}
	return 0;
}
2024/12/7 09:05
加载中...