이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "cyberland.h"
#include <vector>
#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#define pb push_back
#define F first
#define S second
#define all(a) a.begin(),a.end()
#define pii pair <int,int>
#define PII pair<pii , pii>
#define ld long double
#define ll long long
#define sz(v) (int)v.size()
#define rep(i , a , b) for(int i=a;i <= b;i++)
#define per(i , a , b) for(int i=a;i >= b;i--)
using namespace std ;
const ll maxn = 2e5+10 , N = 1e5 +1 , maxq = 202 , inf = 1e18 , maxk = 2022 , mod =1e9+7 ;
ld dis[maxn][102] ;int mark[maxn] ,is[maxn];
vector <pair<int,ld> > G[maxn] ;
void dfs(int v){
is[v] =1 ;
for(auto x : G[v]){
if(is[x.F]==1)continue ;
dfs(x.F) ;
}
}
double solve(int n, int m, int k, int h, vector<int> x, vector<int> y, vector<int> c, vector<int> t) {
rep(i , 0 , n-1)G[i].clear() ;
rep(i , 0, n-1)is[i] =0 ;
rep(i , 0 ,m-1){
G[x[i]].pb({y[i] , c[i]});
G[y[i]].pb({x[i] , c[i]}) ;
}
dfs(h) ;
if(is[0]== 0)return -1 ;
k = min(k , 100);
rep(j , 0 , n-1)rep(z , 0 , k)dis[j][z] = inf ;
for(auto x : G[h]){
dis[x.F][0] = x.S;
}
ld ans =inf;
rep(i , 0 , k){
priority_queue <pair<ld,int> > pq ;
rep(j , 0 , n-1){
pq.push({-dis[j][i] , j}) ;
mark[j] =0 ;
}
while(sz(pq)){
int v = pq.top().S ;pq.pop();
if(mark[v] == 1)continue;
mark[v] = 1;
for(auto a : G[v]){
if(a.F == h)continue ;
if(dis[a.F][i] > dis[v][i]+a.S){
dis[a.F][i] = dis[v][i] + a.S ;
pq.push({-dis[a.F][i] , a.F});
}
}
}
rep(j , 0 , n-1){
rep(z ,0 , sz(G[j])-1){
G[j][z].S /= 2.00000000 ;
}
}
rep(j , 0 , n-1){
if(j == 0 || (t[j] == 0 && is[j] == 1))
ans = min(ans , dis[j][i]) ;
}
rep(j , 0 , n-1){
if(t[j]==2){
dis[j][i+1] = dis[j][i] ;
}
}
}
return 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... |
# | 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... |