Submission #448390

# Submission time Handle Problem Language Result Execution time Memory
448390 2021-07-30T02:31:48 Z NhatMinh0208 Robot (JOI21_ho_t4) C++14
100 / 100
1160 ms 141756 KB
#ifndef CPL_TEMPLATE
#define CPL_TEMPLATE
/*
	Normie's Template v2.5
	Changes:
    Added warning against using pragmas on USACO.
*/
// Standard library in one include.
#include <bits/stdc++.h>
using namespace std;
 
// ordered_set library.
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
#define ordered_set(el) tree<el,null_type,less<el>,rb_tree_tag,tree_order_statistics_node_update>
 
// AtCoder library. (Comment out these two lines if you're not submitting in AtCoder.) (Or if you want to use it in other judges, run expander.py first.)
//#include <atcoder/all>
//using namespace atcoder;

//Pragmas (Comment out these three lines if you're submitting in szkopul or USACO.)
#pragma comment(linker, "/stack:200000000")
#pragma GCC optimize("Ofast,unroll-loops,tree-vectorize")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,tune=native")
 
//File I/O.
#define FILE_IN "cseq.inp"
#define FILE_OUT "cseq.out"
#define ofile freopen(FILE_IN,"r",stdin);freopen(FILE_OUT,"w",stdout)
 
//Fast I/O.
#define fio ios::sync_with_stdio(0);cin.tie(0)
#define nfio cin.tie(0)
#define endl "\n"
 
//Order checking.
#define ord(a,b,c) ((a>=b)and(b>=c))
 
//min/max redefines, so i dont have to resolve annoying compile errors.
#define min(a,b) (((a)<(b))?(a):(b))
#define max(a,b) (((a)>(b))?(a):(b))

// Fast min/max assigns to use with AVX.
// Requires g++ 9.2.0.
template<typename T>
__attribute__((always_inline)) void chkmin(T& a, const T& b) {
    a=(a<b)?a:b;
}

template<typename T>
__attribute__((always_inline)) void chkmax(T& a, const T& b) {
    a=(a>b)?a:b;
}
 
//Constants.
#define MOD (ll(998244353))
#define MAX 300001
#define mag 320
const long double PI=3.14159265358979;
 
//Pairs and 3-pairs.
#define p1 first
#define p2 second.first
#define p3 second.second
#define fi first
#define se second
#define pii(element_type) pair<element_type,element_type>
#define piii(element_type) pair<element_type,pii(element_type)>
 
//Quick power of 2.
#define pow2(x) (ll(1)<<x)
 
//Short for-loops.
#define ff(i,__,___) for(int i=__;i<=___;i++)
#define rr(i,__,___) for(int i=__;i>=___;i--)
 
//Typedefs.
#define bi BigInt
typedef long long ll;
typedef long double ld;
typedef short sh;

// Binpow and stuff
ll BOW(ll a, ll x, ll p)
{
	if (!x) return 1;
	ll res=BOW(a,x/2,p);
	res*=res;
	res%=p;
	if (x%2) res*=a;
	return res%p;
}
ll INV(ll a, ll p)
{
	return BOW(a,p-2,p);
}
//---------END-------//
#endif
vector<pii(ll)> gt[500001];
ll n,m,i,j,k,t,t1,u,v,a,b;
ll ar[200001],br[200001],cr[200001],pr[200001];
map<ll,ll> summ[100001];
map<ll,vector<pii(ll)>> lmao[100001];
ll dis[500001];
priority_queue<pii(ll),vector<pii(ll)>,greater<pii(ll)>> pq;
int main()
{
	fio;
    cin>>n>>m;
    for (i=1;i<=m;i++)
    {
        cin>>ar[i]>>br[i]>>cr[i]>>pr[i];
        lmao[ar[i]][cr[i]].push_back({br[i],i});
        lmao[br[i]][cr[i]].push_back({ar[i],i});
        summ[ar[i]][cr[i]]+=pr[i];
        summ[br[i]][cr[i]]+=pr[i];
    }
    for (i=1;i<=n;i++)
    {
        for (auto &g : lmao[i]) 
        {
            u=summ[i][g.fi];
            for (auto gg : g.se)
            {
                if (i==ar[gg.se])
                {
                    gt[i].push_back({n+2*(gg.se-1)+1,pr[gg.se]});
                }
                else
                {
                    gt[i].push_back({n+2*(gg.se-1)+2,pr[gg.se]});   
                }
                gt[i].push_back({gg.fi,pr[gg.se]});
                gt[i].push_back({gg.fi,u-pr[gg.se]});
            }
            if (g.se.size()>=2)
            {
            sort(g.se.begin(),g.se.end(),[](pii(ll) a, pii(ll) b){
                return (pr[a.se]>pr[b.se]);
            });
            for (j=0;j<g.se.size();j++)
            {
                a=g.se[j].se;
                if (j-0)
                {
                    b=g.se[0].se;
                    if (i==ar[a])
                    {
                        gt[n+2*(a-1)+2].push_back({g.se[0].fi,u-pr[a]-pr[b]});
                    }
                    else
                    {
                        gt[n+2*(a-1)+1].push_back({g.se[0].fi,u-pr[a]-pr[b]});
                    }
                }
                if (j-1)
                {
                    b=g.se[1].se;
                    if (i==ar[a])
                    {
                        gt[n+2*(a-1)+2].push_back({g.se[1].fi,u-pr[a]-pr[b]});
                    }
                    else
                    {
                        gt[n+2*(a-1)+1].push_back({g.se[1].fi,u-pr[a]-pr[b]});
                    }
                }
            }
            }
        }
    }
    for (i=1;i<=n+2*m;i++) 
    {
        dis[i]=1e18;
        //  for (auto g : gt[i]) cout<<i<<' '<<g.fi<<' '<<g.se<<endl;
    }
    dis[1]=0;
    pq.push({0,1});
    while(pq.size())
    {
        auto pp=pq.top();
        pq.pop();
        if (dis[pp.se]-pp.fi) continue;
        for (auto g : gt[pp.se])
        {
            if (dis[g.fi]>pp.fi+g.se)
            {
                dis[g.fi]=pp.fi+g.se;
                pq.push({pp.fi+g.se,g.fi});
            }
        }
    }
    if (dis[n]==1e18) cout<<-1; else cout<<dis[n];
}
// a

Compilation message

Main.cpp:23: warning: ignoring '#pragma comment ' [-Wunknown-pragmas]
   23 | #pragma comment(linker, "/stack:200000000")
      | 
Main.cpp: In function 'int main()':
Main.cpp:142:23: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  142 |             for (j=0;j<g.se.size();j++)
      |                      ~^~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 14 ms 21452 KB Output is correct
2 Correct 14 ms 21472 KB Output is correct
3 Correct 14 ms 21452 KB Output is correct
4 Correct 14 ms 21420 KB Output is correct
5 Correct 14 ms 21472 KB Output is correct
6 Correct 14 ms 21504 KB Output is correct
7 Correct 15 ms 21836 KB Output is correct
8 Correct 14 ms 21604 KB Output is correct
9 Correct 18 ms 22476 KB Output is correct
10 Correct 18 ms 22348 KB Output is correct
11 Correct 17 ms 22244 KB Output is correct
12 Correct 16 ms 22232 KB Output is correct
13 Correct 17 ms 22248 KB Output is correct
14 Correct 17 ms 22248 KB Output is correct
15 Correct 16 ms 21888 KB Output is correct
16 Correct 17 ms 22312 KB Output is correct
17 Correct 17 ms 22164 KB Output is correct
18 Correct 15 ms 21836 KB Output is correct
19 Correct 17 ms 22248 KB Output is correct
20 Correct 17 ms 22120 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 278 ms 60340 KB Output is correct
2 Correct 113 ms 38576 KB Output is correct
3 Correct 429 ms 74432 KB Output is correct
4 Correct 166 ms 46656 KB Output is correct
5 Correct 1108 ms 124156 KB Output is correct
6 Correct 971 ms 114644 KB Output is correct
7 Correct 624 ms 107080 KB Output is correct
8 Correct 797 ms 101392 KB Output is correct
9 Correct 820 ms 101444 KB Output is correct
10 Correct 448 ms 80820 KB Output is correct
11 Correct 270 ms 64396 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 14 ms 21452 KB Output is correct
2 Correct 14 ms 21472 KB Output is correct
3 Correct 14 ms 21452 KB Output is correct
4 Correct 14 ms 21420 KB Output is correct
5 Correct 14 ms 21472 KB Output is correct
6 Correct 14 ms 21504 KB Output is correct
7 Correct 15 ms 21836 KB Output is correct
8 Correct 14 ms 21604 KB Output is correct
9 Correct 18 ms 22476 KB Output is correct
10 Correct 18 ms 22348 KB Output is correct
11 Correct 17 ms 22244 KB Output is correct
12 Correct 16 ms 22232 KB Output is correct
13 Correct 17 ms 22248 KB Output is correct
14 Correct 17 ms 22248 KB Output is correct
15 Correct 16 ms 21888 KB Output is correct
16 Correct 17 ms 22312 KB Output is correct
17 Correct 17 ms 22164 KB Output is correct
18 Correct 15 ms 21836 KB Output is correct
19 Correct 17 ms 22248 KB Output is correct
20 Correct 17 ms 22120 KB Output is correct
21 Correct 278 ms 60340 KB Output is correct
22 Correct 113 ms 38576 KB Output is correct
23 Correct 429 ms 74432 KB Output is correct
24 Correct 166 ms 46656 KB Output is correct
25 Correct 1108 ms 124156 KB Output is correct
26 Correct 971 ms 114644 KB Output is correct
27 Correct 624 ms 107080 KB Output is correct
28 Correct 797 ms 101392 KB Output is correct
29 Correct 820 ms 101444 KB Output is correct
30 Correct 448 ms 80820 KB Output is correct
31 Correct 270 ms 64396 KB Output is correct
32 Correct 420 ms 81392 KB Output is correct
33 Correct 375 ms 68148 KB Output is correct
34 Correct 648 ms 86948 KB Output is correct
35 Correct 456 ms 74992 KB Output is correct
36 Correct 577 ms 79768 KB Output is correct
37 Correct 595 ms 93356 KB Output is correct
38 Correct 615 ms 108604 KB Output is correct
39 Correct 511 ms 85864 KB Output is correct
40 Correct 819 ms 104576 KB Output is correct
41 Correct 841 ms 104976 KB Output is correct
42 Correct 710 ms 106276 KB Output is correct
43 Correct 327 ms 65992 KB Output is correct
44 Correct 785 ms 101848 KB Output is correct
45 Correct 549 ms 87236 KB Output is correct
46 Correct 555 ms 84804 KB Output is correct
47 Correct 653 ms 91144 KB Output is correct
48 Correct 1160 ms 141756 KB Output is correct