Submission #1215448

#TimeUsernameProblemLanguageResultExecution timeMemory
1215448Mike_VuRobot (JOI21_ho_t4)C++17
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef double dou;
#define pii pair<int, int>
#define fi first
#define se second
#define pb push_back
#define BITJ(x, j) (((x)>>(j))&1)
#define MASK(j) (1LL<<(j))
#define ALL(v) v.begin(), v.end()

template<typename T> bool maximize(T &x, const T &y) {
    if (x < y) {x = y; return 1;}
    return 0;
}
template<typename T> bool minimize(T &x, const T &y) {
    if (x > y) {x = y; return 1;}
    return 0;
}

struct edge{
    int v, p, c;
    edge(int _v, int _p, int _c) {
        v = _v;
        p = _p;
        c = _c;
    }
    void takeval(int &_v, int &_p, int &_c) {
        _v = v;
        _p = p;
        _c = c;
    }
};
bool cmpedge(const edge &a, const edge &b) {
    if (a.c != b.c) return a.c < b.c;
    return a.p < b.p;
}

const int maxn = 1e5+5;
const ll INF = (ll)3e18+7;
int n, m;
vector<edge> rawadj[maxn];
vector<pair<int, ll>> adj[maxn];
ll dis[maxn];

void fixedge(int u) {
    sort(ALL(rawadj), cmpedge);
    ll sumw = 0;
    for (int i = 0; i < (int)rawadj[i].size(); i++) {
        int v, p, c;
        ll w;
        rawadj[i].takeval(v, p, c);
        //independent -> 0
        //dependent: itself or all others
        //new
        if (i == 0 || c != rawadj[i-1].c) {
            sumw = 0;
        }
        //check same
        if ((i > 0 && c == rawadj[i-1].c) ||
            (i < (int)rawadj[i].size()-1 && c == rawadj[i+1].c)){
            w = p;
            //if largest
            if (i == (int)rawadj[i].size()-1 || c != rawadj[i+1].c) {
                minimize(w, sumw);
            }
            sumw += p;
        }
        else {
            w = 0;
        }
        adj[u].pb({v, w});
    }
}

void dijkstra() {
    memset(dis, 0x3f, sizeof(dis));
    priority_queue<pair<ll, int>> q;
    q.push({0, 1});
    dis[1] = 0;
    while (!q.empty()) {
        int u = q.top().se;
        ll w = -q.top().fi;
        if (w != dis[u]) continue;
        for (pii cur : adj[u]) {
            int v = cur.fi;
            ll w = cur.se;
            if (minimize(dis[v], dis[u]+w))
        }
    }
}

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
//    #define name "task"
//    if (fopen(name".inp", "r")) {
//        freopen(name".inp", "r", stdin);
//        freopen(name".out", "w", stdout);
//    }
    cin >> n >> m;
    //input 1 bidi -> 2 unidi
    for (int i = 1; i <= m; i++) {
        int u, v, p, c;
        cin >> u >> v >> c >> p;
        rawadj[u].pb(edge(v, p, c));
        rawadj[v].pb(edge(u, p, c));
    }
    //consider each node
    for (int i = 1; i <= n; i++) {
        fixedge(i);
    }
    //dijkstra in final graph -> ans
    dijkstra();
    cout << (dis[n] > INF ? -1 : dis[n]);
}

Compilation message (stderr)

Main.cpp: In function 'void fixedge(int)':
Main.cpp:12:18: error: request for member 'begin' in 'rawadj', which is of non-class type 'std::vector<edge> [100005]'
   12 | #define ALL(v) v.begin(), v.end()
      |                  ^~~~~
Main.cpp:49:10: note: in expansion of macro 'ALL'
   49 |     sort(ALL(rawadj), cmpedge);
      |          ^~~
Main.cpp:12:29: error: request for member 'end' in 'rawadj', which is of non-class type 'std::vector<edge> [100005]'
   12 | #define ALL(v) v.begin(), v.end()
      |                             ^~~
Main.cpp:49:10: note: in expansion of macro 'ALL'
   49 |     sort(ALL(rawadj), cmpedge);
      |          ^~~
Main.cpp:54:19: error: 'class std::vector<edge>' has no member named 'takeval'
   54 |         rawadj[i].takeval(v, p, c);
      |                   ^~~~~~~
Main.cpp:58:40: error: 'class std::vector<edge>' has no member named 'c'
   58 |         if (i == 0 || c != rawadj[i-1].c) {
      |                                        ^
Main.cpp:62:40: error: 'class std::vector<edge>' has no member named 'c'
   62 |         if ((i > 0 && c == rawadj[i-1].c) ||
      |                                        ^
Main.cpp:63:62: error: 'class std::vector<edge>' has no member named 'c'
   63 |             (i < (int)rawadj[i].size()-1 && c == rawadj[i+1].c)){
      |                                                              ^
Main.cpp:66:66: error: 'class std::vector<edge>' has no member named 'c'
   66 |             if (i == (int)rawadj[i].size()-1 || c != rawadj[i+1].c) {
      |                                                                  ^
Main.cpp: In function 'void dijkstra()':
Main.cpp:91:9: error: expected primary-expression before '}' token
   91 |         }
      |         ^