Submission #1330607

#TimeUsernameProblemLanguageResultExecution timeMemory
1330607bradley0927Post Office (JOI25_ho_t5)C++20
Compilation error
0 ms0 KiB
#include <iostream>
#include <vector>
using namespace std;

struct Mail {
    int dist, cur;
    bool operator<(const Mail &other) const {//largest dist at front, smallest at back
        return dist < other.dist;
    }
};

int main() {
    int n, m;
    cin >> n;
    vector<int> adj(n+1);
    for (int i = 1; i <= n; i++) cin >> adj[i];
    cin >> m;

    vector<priority_queue<Mail>> mails(n+1), new_mails(n+1);//mails at each node
    vector<int> visited(n+1, -1);

    for (int i = 0; i < m; i++) {
        int from, dest;
        cin >> from >> dest;

        int dist = 0;
        int u = from;
        while (u != dest) {
            visited[u] = i;
            dist++;
            u = adj[u];
            if (visited[u] == i) {//impossible to deliver (use t to track the time using visited array)
                cout << -1;
                return 0;
            }
        }
        if (dist != 0) mails[from].emplace(dist, from);
    }

    //delay schedule if multiple mail at same node
    int comp = 0, time = 0;//completed mails
    while (comp < m) {
        for (int i = 1; i <= n; i++) {// i = node number
            if (!mails[i].empty()) {
                Mail mail = mails[i].top();
                mails[i].pop();
                //add to next node
                mail.cur = adj[mail.cur];
                mail.dist--;
                if (mail.dist == 0) {
                    comp++;
                } else {
                    new_mails[mail.cur].push(mail);
                }
            }
        }
        for (int i = 1; i <= n; i++) {
            while (!new_mails[i].empty()) {
                Mail mail = new_mails[i].top();
                new_mails[i].pop();
                mails[i].push(mail);
            }
        }
        time++;
    }
    cout << time;
}

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:19:12: error: 'priority_queue' was not declared in this scope
   19 |     vector<priority_queue<Mail>> mails(n+1), new_mails(n+1);//mails at each node
      |            ^~~~~~~~~~~~~~
Main.cpp:3:1: note: 'std::priority_queue' is defined in header '<queue>'; did you forget to '#include <queue>'?
    2 | #include <vector>
  +++ |+#include <queue>
    3 | using namespace std;
Main.cpp:19:31: error: template argument 1 is invalid
   19 |     vector<priority_queue<Mail>> mails(n+1), new_mails(n+1);//mails at each node
      |                               ^~
Main.cpp:19:31: error: template argument 2 is invalid
Main.cpp:37:29: error: invalid types 'int[int]' for array subscript
   37 |         if (dist != 0) mails[from].emplace(dist, from);
      |                             ^
Main.cpp:44:23: error: invalid types 'int[int]' for array subscript
   44 |             if (!mails[i].empty()) {
      |                       ^
Main.cpp:45:34: error: invalid types 'int[int]' for array subscript
   45 |                 Mail mail = mails[i].top();
      |                                  ^
Main.cpp:46:22: error: invalid types 'int[int]' for array subscript
   46 |                 mails[i].pop();
      |                      ^
Main.cpp:53:30: error: invalid types 'int[int]' for array subscript
   53 |                     new_mails[mail.cur].push(mail);
      |                              ^
Main.cpp:58:30: error: invalid types 'int[int]' for array subscript
   58 |             while (!new_mails[i].empty()) {
      |                              ^
Main.cpp:59:38: error: invalid types 'int[int]' for array subscript
   59 |                 Mail mail = new_mails[i].top();
      |                                      ^
Main.cpp:60:26: error: invalid types 'int[int]' for array subscript
   60 |                 new_mails[i].pop();
      |                          ^
Main.cpp:61:22: error: invalid types 'int[int]' for array subscript
   61 |                 mails[i].push(mail);
      |                      ^