Submission #261686

#TimeUsernameProblemLanguageResultExecution timeMemory
261686MarlovTales of seafaring (POI13_mor)C++14
60 / 100
1821 ms21624 KiB
/* Code by @marlov */ #include <iostream> #include <fstream> #include <string> #include <sstream> #include <vector> #include <string> #include <cmath> #include <algorithm> #include <iomanip> #include <utility> #include <set> #include <unordered_set> #include <map> #include <unordered_map> #include <stack> #include <queue> #include <iterator> using namespace std; typedef long long ll; typedef pair<int,int> pi; #define maxN 5005 #define maxK 1000000 #define INF 100000000 int N,M,K; vector<int> adj[maxN]; pair<pi,pi> query[maxK]; bool answer[maxK]; int dist[maxN][2]; void bfs(int p){ queue< pair<int,int> > q; dist[p][0]=0; q.push(make_pair(p,0)); while(!q.empty()){ int cn=q.front().first; int cd=q.front().second; q.pop(); for(int i=0;i<adj[cn].size();i++){ int nn=adj[cn][i]; if(dist[nn][(cd+1)%2]>cd+1){ dist[nn][(cd+1)%2]=cd+1; q.push(make_pair(nn,cd+1)); } } } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin>>N>>M>>K; int u,v; for(int i=0;i<M;i++){ cin>>u>>v; adj[u].push_back(v); adj[v].push_back(u); } for(int i=0;i<K;i++){ if(query[i].first.first>query[i].first.second) swap(query[i].first.first,query[i].first.second); cin>>query[i].first.first>>query[i].first.second>>query[i].second.first; query[i].second.second=i; } sort(query,query+K); int ci=0; while(ci<K){ int thn=query[ci].first.first; for(int i=0;i<=N;i++){ dist[i][0]=INF; dist[i][1]=INF; } dist[thn][0]=0; bfs(thn); while(query[ci].first.first==thn){ if(dist[query[ci].first.second][query[ci].second.first%2]!=INF&&dist[query[ci].first.second][query[ci].second.first%2]<=query[ci].second.first){ answer[query[ci].second.second]=true; } ci++; } } for(int i=0;i<K;i++){ if(answer[i]){ cout<<"TAK"<<'\n'; }else{ cout<<"NIE"<<'\n'; } } return 0; } /* stuff you should look for * int overflow, array bounds * special cases (n=1,n=0?) * do smth instead of nothing and stay organized */

Compilation message (stderr)

mor.cpp: In function 'void bfs(int)':
mor.cpp:43:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=0;i<adj[cn].size();i++){
               ~^~~~~~~~~~~~~~~
#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...