이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define sz(v) (int)v.size()
#define fi first
#define sc second
const int MAXN = 105, MAXK = 1005, INF = 1e9+5;
int b[MAXN][MAXK], s[MAXN][MAXK];
vector< pair<int,int>> adj[2][MAXN];
int dist[2][MAXN], n;
void dij(int z){
for(int i = 1; i <= n; i++)dist[z][i] = INF;
set< pair<int,int> > st;
dist[z][1] = 0;
st.insert({0,1});
while(!st.empty()){
int x = st.begin()->sc; st.erase(st.begin());
for(int i = 0; i < sz(adj[z][x]); i++){
int viz = adj[z][x][i].fi, w = adj[z][x][i].sc;
if(dist[z][viz] > dist[z][x] + w){
st.erase({dist[z][viz],viz});
dist[z][viz] = dist[z][x] + w;
st.insert({dist[z][viz],viz});
}
}
}
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0); cin.tie(0);
int m,k; cin>>n>>m>>k;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= k; j++)cin>>b[i][j]>>s[i][j];
for(int i = 1; i <= m; i++){
int a,b,c; cin>>a>>b>>c;
adj[0][a].emplace_back(b,c);
adj[1][b].emplace_back(a,c);
}
dij(0);
dij(1);
int l = 0;
for(int i = 1; i <= n; i++){
int x = 0;
for(int j = 1; j <= k; j++) x = max(x, s[i][j]-b[1][j]);
if(dist[0][i]+dist[1][i] == 0)continue;
int y = x/(dist[0][i]+dist[1][i]);
l = max(l, y );
}
cout<<l<<"\n";
}
# | 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... |