Submission #111496

# Submission time Handle Problem Language Result Execution time Memory
111496 2019-05-15T13:20:55 Z Segtree Travelling Merchant (APIO17_merchant) C++14
0 / 100
721 ms 2040 KB
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
typedef long double ld;
#define chmax(a,b) a=max(a,b);
#define chmin(a,b) a=min(a,b);
#define N 110
#define K 1010
ll n,m,k,d[N][N],v[N][N];
ll s[N][K],b[N][K];
void wf(){
    for(int r=1;r<=n;r++){
	for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){
	    d[i][j]=min(d[i][j],d[i][r]+d[r][j]);
	}
    }
}

ld dist[N];
bool solve(ll t){
    /*cout<<"-----"<<t<<endl;
    for(int i=1;i<=n;i++){
	cout<<i<<":";
	for(int j=1;j<=n;j++)cout<<v[i][j]-t*d[i][j]<<" ";
	cout<<endl;
    }*/
    for(int i=1;i<=n;i++)dist[i]=0;
    for(int u=0;u<=N;u++){
	for(int i=1;i<=n;i++){
	    for(int j=1;j<=n;j++)if(i!=j){
		ld ne=dist[i]-(v[i][j]-t*d[i][j]+0.000000001);
		if(u==N&&dist[j]>ne)return 1;
		chmin(dist[j],ne);
	    }
	}
    }
    return 0;
}

int main(){
    cin>>n>>m>>k;
    for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){
	d[i][j]=1e17;
    }
    for(int i=1;i<=n;i++){
	for(int j=0;j<k;j++){
	    cin>>b[i][j]>>s[i][j];
	    d[i][i]=0;
	}
    } 
    for(int i=0;i<m;i++){
	ll x,y,z;cin>>x>>y>>z;
	d[x][y]=z;
    }
    wf();
    /*
    for(int i=1;i<=n;i++){
	cout<<i<<":";
	for(int j=1;j<=n;j++)cout<<d[i][j]<<" ";
	cout<<endl;
    }*/
    for(int r=1;r<=n;r++){
	for(int i=1;i<=n;i++){
	    ll ma=0;
	    for(int j=0;j<k;j++){
		if(b[1][j]==-1)continue;
		if(~s[i][j]&&~b[r][j])ma=max(ma,s[i][j]-b[r][j]);
	    }
	    v[r][i]=ma;
	}
    }
    ll l=0,r=1e17,mid;
    while(l<r-1){
	mid=(l+r)/2;
	if(solve(mid))l=mid;
	else r=mid;
    }
    cout<<l<<endl;
    return 0;
}
# Verdict Execution time Memory Grader output
1 Incorrect 721 ms 2040 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 105 ms 988 KB Output is correct
2 Incorrect 103 ms 896 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 641 ms 1508 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 105 ms 988 KB Output is correct
2 Incorrect 103 ms 896 KB Output isn't correct
3 Halted 0 ms 0 KB -