# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
518894 | 2022-01-25T04:31:26 Z | sudheerays123 | 페리들 (NOI13_ferries) | C++17 | 195 ms | 19924 KB |
#include <bits/stdc++.h> using namespace std; #define fast ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); #define ll long long int #define tc ll test;cin >> test;while(test--) #define vi vector<ll> #define pll pair<ll,ll> #define pb push_back #define mp make_pair #define INF 1e18 #define MOD 1000000007 #define ff first #define ss second #define in >> #define out << #define space << " " << #define spacef << " " #define fo(i,a,b) for(ll i = a; i <= b; i++) #define nextline out "\n" #define print(x) for(auto i : x ) cout out i spacef #define mmax(x,i) x = max(x,i) #define mmin(x,i) x = min(x,i) #define N 100005 vector<bool> visited(N,false); vi radj[N]; void dfs(ll s){ if(visited[s]) return; visited[s] = true; for(auto u : radj[s]) dfs(u); } int main() { fast; ll n,m; cin in n in m; vector<pll> adj[n+5]; fo(i,1,m){ ll a,b,c; cin in a in b in c; adj[a].pb(mp(b,c)); radj[b].pb(a); } vi indegree(n+5,0); dfs(n); fo(i,1,n){ for(auto u : radj[i]){ if(visited[i] && visited[u]) indegree[u]++; } } vi dp(n+5); // dp[i] = minimum cost to come from N to i queue<ll> q; dp[n] = 0; q.push(n); while(!q.empty()){ ll a = q.front(); q.pop(); if(a != n){ vi first; vi second; for(auto u : adj[a]){ first.pb(dp[u.first]); second.pb(u.second); } sort(first.begin(),first.end()); sort(second.rbegin(),second.rend()); dp[a] = INF; fo(i,0,adj[a].size()-1) mmin(dp[a],first[i]+second[i]); } for(auto u : radj[a]){ indegree[u]--; if(!indegree[u]) q.push(u); } } cout out dp[1]; return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 2636 KB | Output is correct |
2 | Correct | 2 ms | 2800 KB | Output is correct |
3 | Correct | 9 ms | 4296 KB | Output is correct |
4 | Correct | 86 ms | 18844 KB | Output is correct |
5 | Correct | 101 ms | 18792 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 2636 KB | Output is correct |
2 | Correct | 2 ms | 2764 KB | Output is correct |
3 | Correct | 10 ms | 4188 KB | Output is correct |
4 | Correct | 46 ms | 10676 KB | Output is correct |
5 | Correct | 99 ms | 13700 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 14 ms | 4300 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 195 ms | 19924 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |