Submission #218196

#TimeUsernameProblemLanguageResultExecution timeMemory
2181961254141856Olympic Bus (JOI20_ho_t4)C++14
0 / 100
1096 ms1912 KiB
/* */ #include <bits/stdc++.h> #define md(x, y) (x + y) / 2 #define ls(x) x << 1 #define rs(x) x << 1 | 1 using namespace std; typedef long long ll; typedef unsigned long long ull; const double PI = acos(-1.0); const double eps = 1e-6; const int INF = 0x3f3f3f3f; const int MAXN = 2e2 + 10; int cnt, head[MAXN], vis[MAXN]; int mp[MAXN][MAXN], cost[MAXN][MAXN]; ll yen, ans; int n, m, uu, tt; struct Edge { int v, next; }edge[50010]; void add(int u, int v) { cnt++; edge[cnt].v = v; edge[cnt].next = head[u]; head[u] = cnt; } void dfs(int u, int fa, int s) { if(u == tt) s = 1; for(int i = head[u]; i != -1; i = edge[i].next) { int v = edge[i].v; if(v == fa || vis[v]) continue; yen += mp[u][v]; vis[v] = true; dfs(v, u, s); yen -= mp[u][v]; vis[v] = false; } if(s) { if(mp[u][uu] < INF) ans = min(ans, yen + mp[u][uu]); if(mp[uu][u] < INF && uu != fa) ans = min(ans, yen + mp[uu][u] + cost[uu][u]); } } int main() { cin >> n >> m; memset(head, -1, sizeof head); memset(mp, INF, sizeof mp); memset(cost, INF, sizeof cost); for(int i = 1; i <= m; i++) { int u, v, c, d; scanf("%d%d%d%d", &u, &v, &c, &d); mp[u][v] = min(c, mp[u][v]); cost[u][v] = min(cost[u][v], d); } for(int i = 1; i <= n; i++) for(int j = 1; j <= n; j++) if(mp[i][j] < INF) add(i, j); ans = 1e18; //printf("ans - %lld\n", ans); yen = 0; uu = 1; tt = n; vis[1] = true; dfs(1, 1, 0); memset(vis, false, sizeof vis); vis[n] = true; tt = 1; uu = n; yen = 0; dfs(n, n, 0); if(ans >= 1e18) printf("-1\n"); else printf("%lld\n", ans); return 0; }

Compilation message (stderr)

ho_t4.cpp: In function 'int main()':
ho_t4.cpp:60:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d%d%d", &u, &v, &c, &d);
         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...