Submission #95776

# Submission time Handle Problem Language Result Execution time Memory
95776 2019-02-02T14:24:14 Z Bodo171 Travelling Merchant (APIO17_merchant) C++14
0 / 100
1000 ms 3992 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=30;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 1084 ms 3992 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 35 ms 1272 KB Output is correct
2 Correct 10 ms 1272 KB Output is correct
3 Correct 178 ms 1340 KB Output is correct
4 Correct 129 ms 1272 KB Output is correct
5 Correct 717 ms 1272 KB Output is correct
6 Correct 2 ms 504 KB Output is correct
7 Correct 6 ms 1144 KB Output is correct
8 Correct 46 ms 1272 KB Output is correct
9 Correct 17 ms 1272 KB Output is correct
10 Correct 141 ms 1400 KB Output is correct
11 Correct 636 ms 1400 KB Output is correct
12 Correct 558 ms 1528 KB Output is correct
13 Correct 17 ms 1272 KB Output is correct
14 Correct 82 ms 1316 KB Output is correct
15 Execution timed out 1074 ms 1372 KB Time limit exceeded
16 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1079 ms 2424 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 35 ms 1272 KB Output is correct
2 Correct 10 ms 1272 KB Output is correct
3 Correct 178 ms 1340 KB Output is correct
4 Correct 129 ms 1272 KB Output is correct
5 Correct 717 ms 1272 KB Output is correct
6 Correct 2 ms 504 KB Output is correct
7 Correct 6 ms 1144 KB Output is correct
8 Correct 46 ms 1272 KB Output is correct
9 Correct 17 ms 1272 KB Output is correct
10 Correct 141 ms 1400 KB Output is correct
11 Correct 636 ms 1400 KB Output is correct
12 Correct 558 ms 1528 KB Output is correct
13 Correct 17 ms 1272 KB Output is correct
14 Correct 82 ms 1316 KB Output is correct
15 Execution timed out 1074 ms 1372 KB Time limit exceeded
16 Halted 0 ms 0 KB -