제출 #733409

#제출 시각아이디문제언어결과실행 시간메모리
7334091075508020060209tc여행하는 상인 (APIO17_merchant)C++14
0 / 100
1071 ms2352 KiB
#include<bits/stdc++.h> using namespace std; #define int long long int n;int m;int K; int buy[110][1100]; int sell[110][1100]; int odis[110][110]; int dis[110][110]; int tmp[110][110]; int reach[110][110]; int ok(int mi){ for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if(!reach[i][j]){continue;} dis[i][j]=odis[i][j]*mi*-1; for(int k=1;k<=K;k++){ if((buy[i][k]==-1)||(sell[j][k]==-1) ){continue;} dis[i][j]=max(dis[i][j],odis[i][j]*mi*-1-buy[i][k]+sell[j][k]); } } } for(int md=1;md<=n;md++){ for(int a=1;a<=n;a++){ for(int b=1;b<=n;b++){ if(!reach[a][b]){continue;} if(!reach[a][md]){continue;} if(!reach[md][b]){continue;} dis[a][b]=max(dis[a][b],dis[a][md]+dis[md][b]); tmp[a][b]=dis[a][b]; } } } for(int md=1;md<=n;md++){ for(int a=1;a<=n;a++){ for(int b=1;b<=n;b++){ if(!reach[a][b]){continue;} if(!reach[a][md]){continue;} if(!reach[md][b]){continue;} dis[a][b]=max(dis[a][b],dis[a][md]+dis[md][b]); } } } for(int a=1;a<=n;a++){ for(int b=1;b<=n;b++){ if(!reach[a][b]){continue;} if(tmp[a][b]!=dis[a][b]){return 1;} } } for(int a=1;a<=n;a++){ for(int b=1;b<=n;b++){ if(a==b){continue;} if(!reach[a][b]){continue;} if(dis[a][b]+dis[b][a]>=0){return 1;} } } return 0; } signed main(){ cin>>n>>m>>K; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ odis[i][j]=1e15; } } for(int i=1;i<=n;i++){ odis[i][i]=0; } for(int i=1;i<=n;i++){ for(int j=1;j<=K;j++){ cin>>buy[i][j]>>sell[i][j]; } } for(int i=1;i<=m;i++){ int a;int b;int c; cin>>a>>b>>c; odis[a][b]=min(odis[a][b],c); } for(int md=1;md<=n;md++){ for(int a=1;a<=n;a++){ for(int b=1;b<=n;b++){ odis[a][b]=min(odis[a][b],odis[a][md]+odis[md][b]); } } } for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if(odis[i][j]>=1e15){ reach[i][j]=0; }else{ reach[i][j]=1; } } } int l=0;int r=1e9; while(l<r){ int mi=l+(r-l+1)/2; if(ok(mi)){ l=mi; }else{ r=mi-1; } } cout<<l<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...