Submission #95777

# Submission time Handle Problem Language Result Execution time Memory
95777 2019-02-02T14:25:43 Z Bodo171 Travelling Merchant (APIO17_merchant) C++14
0 / 100
1000 ms 3796 KB
#include <iostream>
#include <fstream>
#include <queue>
#include <climits>
#define mp make_pair
using namespace std;
const int nmax=105;
const int kmax=1005;
queue< pair<int,int> > q;
vector<int> v[nmax];
vector<long long> cost[nmax];
bool inq[nmax][kmax];
long long d[nmax][kmax],prof[nmax][kmax],pret[nmax][kmax];
int viz[nmax][kmax];
int n,k,m,nod,item,nxt,i,j,a,b,c;
long long p,ans;
bool check(long long x)
{
    while(!q.empty()) q.pop();
    q.push({0,0});
    for(int i=0;i<=n;i++)
        for(int j=0;j<=k;j++)
           viz[i][j]=0,inq[i][j]=0;
    for(int i=1;i<=n;i++)
        for(int j=0;j<=k;j++)
          d[i][j]=LLONG_MIN;
    while(!q.empty())
    {
        nod=q.front().first;item=q.front().second;
        q.pop();inq[nod][item]=0;
        viz[nod][item]++;
        for(int i=0;i<v[nod].size();i++)
        {
            if(d[nod][item]-1LL*x*cost[nod][i]>=d[v[nod][i]][item])
            {
                d[v[nod][i]][item]=d[nod][item]-1LL*x*cost[nod][i];
                if(!inq[v[nod][i]][item])
                {
                    inq[v[nod][i]][item]=1;
                    q.push(mp(v[nod][i],item));
                }
                viz[v[nod][i]][item]++;
                if(viz[v[nod][i]][item]>=n*(k+1)+1)
                    return 1;
            }
            nxt=v[nod][i];
            if(item)
            {
                if(d[nod][item]+1LL*prof[nxt][item]-1LL*x*cost[nod][i]>=d[nxt][0]&&prof[nxt][item]!=-1)
                {
                    d[nxt][0]=d[nod][item]-1LL*x*cost[nod][i]+1LL*prof[nxt][item];
                    if(!inq[nxt][0])
                    {
                        inq[nxt][0]=1;
                        q.push({nxt,0});
                    }
                    viz[nxt][0]++;
                    if(viz[nxt][0]>=n*(k+1)+1)
                        return 1;
                }
            }
        }
        if(!item)
        {
            for(int i=1;i<=k;i++)
             if(d[nod][0]-1LL*pret[nod][i]>=d[nod][i]&&pret[nod][i]!=-1)
             {
                 d[nod][i]=d[nod][0]-1LL*pret[nod][i];
                 if(!inq[nod][i])
                 {
                     inq[nod][i]=1;
                     q.push({nod,i});
                 }
                 viz[nod][i]++;
                 if(viz[nod][i]>=n*(k+1)+1)
                    return 1;
             }
        }
    }
    return 0;
}
int main()
{
    //freopen("data.in","r",stdin);
    ios_base::sync_with_stdio(false);
    cin>>n>>m>>k;
    for(i=1;i<=n;i++)
    {
        pret[i][0]=-1,prof[i][0]=-1;
        for(j=1;j<=k;j++)
        {
            cin>>pret[i][j];
            cin>>prof[i][j];
        }
    }
    for(i=1;i<=n;i++)
        v[0].push_back(i),cost[0].push_back(0);
    for(i=1;i<=k;i++)
        pret[0][i]=prof[0][i]=-1;
    for(i=1;i<=m;i++)
    {
        cin>>a>>b>>c;
        v[a].push_back(b);
        cost[a].push_back(c);
    }
    for(p=29;p>=0;p--)
        if(check(ans+(1LL<<p)))
          ans+=(1LL<<p);
    cout<<ans;
    return 0;
}

Compilation message

merchant.cpp: In function 'bool check(long long int)':
merchant.cpp:32:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i=0;i<v[nod].size();i++)
                     ~^~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Execution timed out 1074 ms 3796 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 36 ms 1292 KB Output is correct
2 Correct 11 ms 1272 KB Output is correct
3 Correct 177 ms 1340 KB Output is correct
4 Correct 129 ms 1376 KB Output is correct
5 Correct 696 ms 1376 KB Output is correct
6 Correct 2 ms 632 KB Output is correct
7 Correct 6 ms 1272 KB Output is correct
8 Correct 47 ms 1316 KB Output is correct
9 Correct 16 ms 1272 KB Output is correct
10 Correct 135 ms 1400 KB Output is correct
11 Correct 625 ms 1340 KB Output is correct
12 Correct 541 ms 1336 KB Output is correct
13 Correct 17 ms 1272 KB Output is correct
14 Correct 82 ms 1272 KB Output is correct
15 Execution timed out 1072 ms 1400 KB Time limit exceeded
16 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1074 ms 2424 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 36 ms 1292 KB Output is correct
2 Correct 11 ms 1272 KB Output is correct
3 Correct 177 ms 1340 KB Output is correct
4 Correct 129 ms 1376 KB Output is correct
5 Correct 696 ms 1376 KB Output is correct
6 Correct 2 ms 632 KB Output is correct
7 Correct 6 ms 1272 KB Output is correct
8 Correct 47 ms 1316 KB Output is correct
9 Correct 16 ms 1272 KB Output is correct
10 Correct 135 ms 1400 KB Output is correct
11 Correct 625 ms 1340 KB Output is correct
12 Correct 541 ms 1336 KB Output is correct
13 Correct 17 ms 1272 KB Output is correct
14 Correct 82 ms 1272 KB Output is correct
15 Execution timed out 1072 ms 1400 KB Time limit exceeded
16 Halted 0 ms 0 KB -