#include <bits/stdc++.h>
#define int long long
using namespace std;
const int dima=1000008;
const int maxN=5003;
vector <vector <int>> adj(maxN);
//map <int, vector <pair <int, int>>> qry;
vector<pair<pair<int,int>,int>> qrys[maxN];
int n, m, q;
int ans[dima];
int dist[maxN][3];
#define inf 100000000000000
void bfs(int st)
{
for (int i=1; i<=n; i++) {dist[i][0]=inf; dist[i][1]=inf;}
queue <pair <int, int>> q; dist[st][0]=0; q.push({st, 0});
while (!q.empty())
{
int node=q.front().first; int stare=q.front().second;
q.pop();
for (auto aux:adj[node])
{
if (dist[aux][1-stare]!=inf) continue;
dist[aux][1-stare]=dist[node][stare]+1;
q.push({aux, 1-stare});
}
}
}
signed main()
{
cin>>n>>m>>q;
for (int i=1; i<=m; i++)
{
int a, b; cin>>a>>b;
adj[a].push_back(b);
adj[b].push_back(a);
}
for (int i=1; i<=q; i++)
{
int a, b, c; cin>>a>>b>>c;
qrys[a].push_back({{b, c}, i});
}
for(int i=1;i<=n;i++)
{
bfs(i);
for(auto q:qrys[i])
{
int t=q.first.first; int d=q.first.second; int id=q.second;
if (dist[t][d%2]<=d) ans[id]=1;
}
}
for (int i=1; i<=q; i++) cout<<(ans[i] ? "TAK" : "NIE")<<"\n";
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |