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...