이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
const int INF=1e9+5;
int l[101][101];
int N,M,K;
int B[101][1001];
int S[101][1001];
int E[101][1001];
long long D[101][101];
int main(){
cin.tie(0);
ios_base::sync_with_stdio(0);
cin>>N>>M>>K;
int i,j,k;
for(i=1 ; i<=N ; i++){
for(j=1 ; j<=N; j++){
l[i][j]=INF;
}
l[i][i]=0;
}
for(i=1 ; i<=N ; i++){
for(j=1 ; j<=K ; j++){
cin>>B[i][j]>>S[i][j];
}
}
for(i=1 ; i<=M ; i++){
int u,v,t;
cin>>u>>v>>t;
l[u][v]=t;
}
for(k=1 ; k<=N ; k++){
for(i=1 ; i<=N ; i++){
for(j=1 ; j<=N ; j++)
l[i][j]=min(l[i][j],l[i][k]+l[k][j]);
}
}
for(i=1 ; i<=N ; i++){
for(j=1 ; j<=N ; j++){
for(k=1 ; k<=K ; k++){
if(S[j][k]>=0 && B[i][k]>=0)
E[i][j]=max(E[i][j],S[j][k]-B[i][k]);
}
}
}
int lef=0;
int ans;
int rig=INF;
while(rig>=lef){
long long mid=(lef+rig)/2;
for(i=1 ; i<=N ; i++){
for(j=1 ; j<=N ; j++){
D[i][j]=mid*l[i][j]-E[i][j];
}
D[i][i]=INF;
}
for(k=1 ; k<=N ; k++)
for(i=1 ; i<=N ; i++){
for(j=1; j<=N ; j++){
if(D[i][j]>D[i][k]+D[k][j])
D[i][j]=D[i][k]+D[k][j];
}
}
int isok=0;
for(i=1 ; i<=N ; i++){
if(D[i][i]<=0)isok=1;
}
if(isok)lef=mid+1,ans=mid;
else rig=mid-1;
}
cout<<ans;
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
merchant.cpp: In function 'int main()':
merchant.cpp:74:9: warning: 'ans' may be used uninitialized in this function [-Wmaybe-uninitialized]
cout<<ans;
~~~~^~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |