# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
138101 | rzbt | Commuter Pass (JOI18_commuter_pass) | C++14 | 933 ms | 30328 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#define mp make_pair
#define pb push_back
#define F first
#define S second
#define all(x) x.begin(),x.end()
#define MAXN 100005
typedef long long ll;
using namespace std;
ll n,m,a,b,x,y;
vector<pair<ll,ll> > niz[MAXN];
vector<ll > preci[MAXN];
set<pair<ll,ll> > q;
ll oda[MAXN],odb[MAXN],odx[MAXN],ody[MAXN],dece[MAXN];
vector<ll> nzm;
ll dpx[MAXN],dpy[MAXN];
ll res;
void dijkstra(ll s,ll *gde){
q.clear();
q.insert(mp(0,s));
while(!q.empty()){
ll tu=q.begin()->first;
ll t=q.begin()->second;
q.erase(q.begin());
if(gde[t] && t!=s){
continue;
}
gde[t]=tu;
for(auto x:niz[t]){
if(!gde[x.first] && x.first!=s){
q.insert(mp(tu+x.second,x.first));
}
}
}
}
int main()///SVE U LONG LONG
{
scanf("%lld %lld", &n, &m);
scanf("%lld %lld", &a, &b);
scanf("%lld %lld", &x, &y);
for(ll i=1;i<=m;i++){
ll t1,t2,t3;
scanf("%lld %lld %lld", &t1, &t2, &t3);
niz[t1].pb(mp(t2,t3));
niz[t2].pb(mp(t1,t3));
}
dijkstra(a,oda);
dijkstra(b,odb);
dijkstra(x,odx);
dijkstra(y,ody);
res=odx[y];
for(ll i=1;i<=n;i++){
if(!(oda[i]+odb[i]== oda[b]))continue;
dpx[i]=odx[i];
dpy[i]=ody[i];
for(auto x:niz[i]){
if(x.second+odb[x.first]+oda[i]==oda[b]){
dece[i]++;
preci[x.first].pb(i);
}
}
if(!dece[i])nzm.pb(i);//samo b lol
}
while(!nzm.empty()){
ll t=nzm.back();
nzm.pop_back();
res = min(res,min(dpx[t]+ody[t],dpy[t]+odx[t]));
//printf(" %d %d %d %d %d\n",t,dpx[t],odx[t],dpy[t],ody[t]);
for(auto x:preci[t]){
dece[x]--;
if(!dece[x])nzm.pb(x);
dpx[x]=min(dpx[x],dpx[t]);
dpy[x]=min(dpy[x],dpy[t]);
}
}
printf("%lld",res);
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |