#include <bits/stdc++.h>
using namespace std;
typedef long long int lli;
typedef pair<lli,lli> pii;
vector<vector<pii> > adj;
void dijk(int start,vector<lli>& dist,vector<lli>& pre){
set<pii> nodes;
int len=dist.size();
dist=vector<lli>(len,1e17);
nodes.insert(pii(0,start));
dist[start]=0;
pre=vector<lli>(len,-1);
while(!nodes.empty())
{
auto sim=*nodes.begin();
nodes.erase(sim);
for(auto u:adj[sim.second]){
if(dist[sim.second]+u.second<dist[u.first]){
if(nodes.find(pii(dist[u.first],u.first))!=nodes.end())
nodes.erase(pii(dist[u.first],u.first));
dist[u.first]=dist[sim.second]+u.second;
pre[u.first]=sim.second;
nodes.insert(pii(dist[u.first],u.first));
}
}
}
}
vector<vector<pii> > gdag(100006,vector<pii>());
vector<lli> in(100006,0);
/*void eliminate(int node,vector<vector<pii> >& dag){
marked2[node]=true;
for (auto u:dag[node])
{
gdag[u.first].push_back(pii(node,u.second));
//cout << "gdag'a ekledi: "<<u.first <<"->"<<node<<"\n";
if(!marked2[u.first])eliminate(u.first,dag);
}
}*/
/*
* */
typedef pair<lli,pii> data;
lli ans=1e17;
void dfs(int node,vector<vector<pii> >& dag,vector<lli>& upminv,vector<lli>& upminu,vector<lli>& distu,vector<lli>& distv){
//cout << "sh dag: "<<node<<"\n";
//cout << "upminu: "<<upminu[node]<<" upminv: "<<upminv[node]<<"\n";
upminu[node]=min(upminu[node],distu[node]);
upminv[node]=min(upminv[node],distv[node]);
ans=min(ans,distv[node]+upminu[node]);
ans=min(ans,distu[node]+upminv[node]);
for (auto kms:dag[node])
{
in[kms.first]--;
upminv[kms.first]=min(upminv[kms.first],upminv[node]);
upminu[kms.first]=min(upminu[kms.first],upminu[node]);
if(in[kms.first]<=0)dfs(kms.first,dag,upminv,upminu,distu,distv);
//cout << node<<"->"<<kms.first<<"\n";
}
}
int main(){
int n,m;
cin>>n>>m;
lli s,t,u,v;
cin>>s>>t>>u>>v;
adj=vector<vector<pii> >(n+1,vector<pii>());
for (int i = 0; i < m; i++)
{
int a,b,c;
cin>>a>>b>>c;
adj[a].push_back(pii(b,c));
adj[b].push_back(pii(a,c));
}
vector<lli> distu(n+1),distv(n+1),preu(n+1),prev(n+1), dists(n+1),pres(n+1),distt(n+1),pret(n+1);
dijk(s,dists,pres);
dijk(t,distt,pret);
vector<vector<pii> > dag(n+1,vector<pii>()),dagters(n+1,vector<pii>());
for(int i=1;i<=n;i++){
for (auto nodi:adj[i])
{
if(nodi.second+dists[i]+distt[nodi.first]==dists[t]){
dag[i].push_back(pii(nodi.first,nodi.second));
dagters[nodi.first].push_back(pii(i,nodi.second));
in[nodi.first]++;
}
}
}
dijk(u,distu,preu);
dijk(v,distv,prev);
vector<lli> upminv(n+1,1e15),upminu(n+1,1e15),upminvters(n+1,1e15),upminuters(n+1,1e15);
upminv[s]=distv[s];
upminu[s]=distu[s];
upminu[s]=distu[s];
upminv[s]=distv[s];
ans=distv[u];
if(in[s]!=0){
//cout << "bozuk\n";
return -1;
}
dfs(s,dag,upminv,upminu,distu,distv);
cout<<ans<<"\n";
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1183 ms |
30380 KB |
Output is correct |
2 |
Correct |
1129 ms |
31812 KB |
Output is correct |
3 |
Correct |
1044 ms |
39108 KB |
Output is correct |
4 |
Correct |
961 ms |
39108 KB |
Output is correct |
5 |
Correct |
982 ms |
39108 KB |
Output is correct |
6 |
Correct |
1264 ms |
39108 KB |
Output is correct |
7 |
Correct |
1008 ms |
39108 KB |
Output is correct |
8 |
Correct |
999 ms |
39108 KB |
Output is correct |
9 |
Correct |
1012 ms |
39108 KB |
Output is correct |
10 |
Correct |
721 ms |
39108 KB |
Output is correct |
11 |
Correct |
403 ms |
39108 KB |
Output is correct |
12 |
Correct |
1076 ms |
39108 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1119 ms |
39108 KB |
Output is correct |
2 |
Correct |
1150 ms |
39108 KB |
Output is correct |
3 |
Correct |
1050 ms |
40472 KB |
Output is correct |
4 |
Correct |
1093 ms |
44676 KB |
Output is correct |
5 |
Correct |
1088 ms |
48896 KB |
Output is correct |
6 |
Correct |
1002 ms |
55932 KB |
Output is correct |
7 |
Correct |
1047 ms |
60468 KB |
Output is correct |
8 |
Correct |
1046 ms |
60468 KB |
Output is correct |
9 |
Correct |
1018 ms |
63280 KB |
Output is correct |
10 |
Correct |
1151 ms |
65304 KB |
Output is correct |
11 |
Correct |
486 ms |
67376 KB |
Output is correct |
12 |
Correct |
1034 ms |
76104 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
55 ms |
76104 KB |
Output is correct |
2 |
Correct |
6 ms |
76104 KB |
Output is correct |
3 |
Correct |
7 ms |
76104 KB |
Output is correct |
4 |
Correct |
56 ms |
76104 KB |
Output is correct |
5 |
Correct |
41 ms |
76104 KB |
Output is correct |
6 |
Correct |
9 ms |
76104 KB |
Output is correct |
7 |
Correct |
9 ms |
76104 KB |
Output is correct |
8 |
Correct |
12 ms |
76104 KB |
Output is correct |
9 |
Correct |
10 ms |
76104 KB |
Output is correct |
10 |
Correct |
35 ms |
76104 KB |
Output is correct |
11 |
Correct |
7 ms |
76104 KB |
Output is correct |
12 |
Correct |
6 ms |
76104 KB |
Output is correct |
13 |
Correct |
7 ms |
76104 KB |
Output is correct |
14 |
Correct |
7 ms |
76104 KB |
Output is correct |
15 |
Correct |
7 ms |
76104 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1183 ms |
30380 KB |
Output is correct |
2 |
Correct |
1129 ms |
31812 KB |
Output is correct |
3 |
Correct |
1044 ms |
39108 KB |
Output is correct |
4 |
Correct |
961 ms |
39108 KB |
Output is correct |
5 |
Correct |
982 ms |
39108 KB |
Output is correct |
6 |
Correct |
1264 ms |
39108 KB |
Output is correct |
7 |
Correct |
1008 ms |
39108 KB |
Output is correct |
8 |
Correct |
999 ms |
39108 KB |
Output is correct |
9 |
Correct |
1012 ms |
39108 KB |
Output is correct |
10 |
Correct |
721 ms |
39108 KB |
Output is correct |
11 |
Correct |
403 ms |
39108 KB |
Output is correct |
12 |
Correct |
1076 ms |
39108 KB |
Output is correct |
13 |
Correct |
1119 ms |
39108 KB |
Output is correct |
14 |
Correct |
1150 ms |
39108 KB |
Output is correct |
15 |
Correct |
1050 ms |
40472 KB |
Output is correct |
16 |
Correct |
1093 ms |
44676 KB |
Output is correct |
17 |
Correct |
1088 ms |
48896 KB |
Output is correct |
18 |
Correct |
1002 ms |
55932 KB |
Output is correct |
19 |
Correct |
1047 ms |
60468 KB |
Output is correct |
20 |
Correct |
1046 ms |
60468 KB |
Output is correct |
21 |
Correct |
1018 ms |
63280 KB |
Output is correct |
22 |
Correct |
1151 ms |
65304 KB |
Output is correct |
23 |
Correct |
486 ms |
67376 KB |
Output is correct |
24 |
Correct |
1034 ms |
76104 KB |
Output is correct |
25 |
Correct |
55 ms |
76104 KB |
Output is correct |
26 |
Correct |
6 ms |
76104 KB |
Output is correct |
27 |
Correct |
7 ms |
76104 KB |
Output is correct |
28 |
Correct |
56 ms |
76104 KB |
Output is correct |
29 |
Correct |
41 ms |
76104 KB |
Output is correct |
30 |
Correct |
9 ms |
76104 KB |
Output is correct |
31 |
Correct |
9 ms |
76104 KB |
Output is correct |
32 |
Correct |
12 ms |
76104 KB |
Output is correct |
33 |
Correct |
10 ms |
76104 KB |
Output is correct |
34 |
Correct |
35 ms |
76104 KB |
Output is correct |
35 |
Correct |
7 ms |
76104 KB |
Output is correct |
36 |
Correct |
6 ms |
76104 KB |
Output is correct |
37 |
Correct |
7 ms |
76104 KB |
Output is correct |
38 |
Correct |
7 ms |
76104 KB |
Output is correct |
39 |
Correct |
7 ms |
76104 KB |
Output is correct |
40 |
Correct |
1321 ms |
76104 KB |
Output is correct |
41 |
Correct |
1137 ms |
76824 KB |
Output is correct |
42 |
Correct |
1062 ms |
81192 KB |
Output is correct |
43 |
Correct |
504 ms |
88060 KB |
Output is correct |
44 |
Correct |
509 ms |
89684 KB |
Output is correct |
45 |
Correct |
947 ms |
94556 KB |
Output is correct |
46 |
Correct |
993 ms |
94556 KB |
Output is correct |
47 |
Correct |
1212 ms |
94556 KB |
Output is correct |
48 |
Correct |
476 ms |
94556 KB |
Output is correct |
49 |
Correct |
910 ms |
94556 KB |
Output is correct |
50 |
Correct |
963 ms |
94556 KB |
Output is correct |
51 |
Correct |
904 ms |
94668 KB |
Output is correct |