Submission #1134093

#TimeUsernameProblemLanguageResultExecution timeMemory
1134093alexddTales of seafaring (POI13_mor)C++20
100 / 100
1584 ms50804 KiB
#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; if (i==t && d>0 && adj[i].empty()) ans[id]=0; } } for (int i=1; i<=q; i++) cout<<(ans[i] ? "TAK" : "NIE")<<"\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...