Submission #1224585

#TimeUsernameProblemLanguageResultExecution timeMemory
1224585KALARRYFrom Hacks to Snitches (BOI21_watchmen)C++20
0 / 100
37 ms10056 KiB
//chockolateman

#include<bits/stdc++.h>

using namespace std;

const int INF = 1e9;

int N,M,K,dist[250005];
vector<int> adj[250005];
pair<int,int> prohibited[250005]; //a mod b
bool visited[250005];

void Dijsktra(int start)
{
    for(int i = 1 ; i <= N ; i++)
        dist[i] = INF;
    dist[start] = 0;
    priority_queue<pair<int,int>> q;
    q.push({0,start});
    while(!q.empty())
    {
        int v = q.top().second;
        q.pop();
        if(visited[v])
            continue;
        visited[v] = true;
        for(auto u : adj[v])
        {
            int w = 1;
            if(prohibited[u].second && ((dist[v] + 1)%prohibited[u].second) == prohibited[u].first)
                w++;
            if(dist[v] + w < dist[u])
            {
                dist[u] = dist[v] + w;
                q.push({-dist[u],u});
            }
        }
    }
}

int main()
{
    scanf("%d%d",&N,&M);
    for(int a,b,i = 1 ; i <= M ; i++)
    {
        scanf("%d%d",&a,&b);
        adj[a].push_back(b);
        adj[b].push_back(a);
    }
    scanf("%d",&K);
    for(int s,i = 1 ; i <= K ; i++)
    {
        scanf("%d",&s);
        for(int l,j = 0 ; j < s ; j++)
        {
            scanf("%d",&l);
            prohibited[l] = {j,s};
        }
    }
    Dijsktra(1);
    printf("%d\n",dist[N]);
    return 0;
}

Compilation message (stderr)

watchmen.cpp: In function 'int main()':
watchmen.cpp:44:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   44 |     scanf("%d%d",&N,&M);
      |     ~~~~~^~~~~~~~~~~~~~
watchmen.cpp:47:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   47 |         scanf("%d%d",&a,&b);
      |         ~~~~~^~~~~~~~~~~~~~
watchmen.cpp:51:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   51 |     scanf("%d",&K);
      |     ~~~~~^~~~~~~~~
watchmen.cpp:54:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   54 |         scanf("%d",&s);
      |         ~~~~~^~~~~~~~~
watchmen.cpp:57:18: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   57 |             scanf("%d",&l);
      |             ~~~~~^~~~~~~~~
#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...