Language: C++

#include<bits/stdc++.h>
const int INF = 1e9;
const int MOD = 1e9+7;
using LL = long long;
const LL LINF = 1e18;
using namespace std;
#define COUT(v) cout<<(v)<<endl
#define CIN(n)  int(n);cin >> (n)
#define LCIN(n) LL(n);cin >> (n)
#define SCIN(n) string(n);cin >> (n)
#define YES(n) cout<<((n)? "YES" : "NO")<<endl
#define Yes(n) cout<<((n)? "Yes" : "No")<<endl
#define POSSIBLE(n) cout << ((n) ? "POSSIBLE" : "IMPOSSIBLE"  ) << endl
#define Possible(n) cout << ((n) ? "Possible" : "Impossible"  ) <<endl

#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define REP(i,n) for(int i=0;i<(n);++i)
#define REPR(i,n) for(int i=n;i>=0;i--)

#define FOREACH(x,a) for(auto& (x) : (a) )

#define ALL(obj) (obj).begin(),(obj).end()

#define P pair<LL,LL>
#define I vector<int>
#define S set<int>
#define pb(v) push_back(v)
#define V vector
#define rt return
#define rmsame(a) sort(ALL(a)),a.erase(unique(ALL(a)), a.end())

typedef string::const_iterator State;
class PalseError {};
class Edge{
public:
    LL from,to,value;
    Edge(LL a,LL b,LL c){
        from = a;
        to = b;
        value = c;
    }
    Edge(LL a,LL b){
        from = a;
        to = b;
    }
};
//スタート点,頂点数、辺を渡して、最短経路の配列を返す
std::vector<LL> dijkstra(LL s,LL N,vector<Edge> E){
    std::vector<LL> ans(N,INF);
    std::vector<std::vector<Edge>> Edges(N);
    FOREACH(e,E){
        Edges.at(e.from).push_back(e);
    }
    priority_queue<P, std::vector<P>, greater<P>> que;
    ans.at(s)= 0;
    que.push(make_pair(0,s));
    while(!que.empty()){
        P p = que.top();que.pop();
        if(ans.at(p.second) < p.first)continue;
        for(int i = 0;i < Edges.at(p.second).size();i++){
            if(ans.at(p.second) + Edges.at(p.second).at(i).value < ans.at(Edges.at(p.second).at(i).to)){
                ans.at(Edges.at(p.second).at(i).to) = ans.at(p.second) + Edges.at(p.second).at(i).value;
                que.push(make_pair(ans.at(Edges.at(p.second).at(i).to),Edges.at(p.second).at(i).to));
            }
        }
    }
    return ans;
}
int main(){
    LCIN(N);LCIN(m);LCIN(s);LCIN(t);
    V<Edge> Edges1,Edges2;
    REP(w,m){
        CIN(a);CIN(b);
        CIN(c);
        CIN(d);
        Edge e(a,b,c);
        Edge q(b,a,c);
        Edges1.pb(e);
        Edges1.pb(q);
        e.value=d;
        Edges2.pb(e);
        q.value=d;
        Edges2.pb(q);
    }
    I dis1 = dijkstra(s,N+1,Edges1);
    I dis2 = dijkstra(t,N+1,Edges2);

    LL money = 1;
    REP(a,15){
        money*=10;
    }
    LL kiroku[100010];
    REP(a,N){
        kiroku[a+1] = dis1.at(a+1)+dis2.at(a+1);
    }
    LL ruiseki[100000];
    ruiseki[N]=LINF;
    for(int a = N-1;a >= 0;a--){
        ruiseki[a]=min(ruiseki[a+1],kiroku[a+1]);
    }
    for(int a = 0;a < N;a++){
        LL ins = money;
        LL ans = ins - ruiseki[a];
        COUT(ans);
    }
    return 0;
}


Compiler output:
a.cc: In function 'int main()':
a.cc:85:22: error: conversion from 'vector<long long int>' to non-scalar type 'vector<int>' requested
   85 |     I dis1 = dijkstra(s,N+1,Edges1);
      |              ~~~~~~~~^~~~~~~~~~~~~~
a.cc:86:22: error: conversion from 'vector<long long int>' to non-scalar type 'vector<int>' requested
   86 |     I dis2 = dijkstra(t,N+1,Edges2);
      |              ~~~~~~~~^~~~~~~~~~~~~~