Submission #8237027
Source Code Expand
#include <bits/stdc++.h>
#define GET_REP(_1, _2, _3, NAME, ...) NAME
#define rep(...) GET_REP(__VA_ARGS__, irep, _rep)(__VA_ARGS__)
#define rep1(...) GET_REP(__VA_ARGS__, irep1, _rep1)(__VA_ARGS__)
#define _rep(i, n) irep (i, 0, n)
#define _rep1(i, n) irep1(i, 1, n)
#define irep(i, a, n) for (int i = a; i < (int)(n); ++i)
#define irep1(i, a, n) for (int i = a; i <= (int)(n); ++i)
#define rrep(i, n) for (int i = (int)(n) - 1; i >= 0; --i)
#define rrep1(i, n) for (int i = (int)(n); i >= 1; --i)
#define allrep(X, x) for (auto &&X : x)
#define all(x) (x).begin(), (x).end()
#ifdef LOCAL
#include "../../Lib/cout_container.hpp"
#define debug(x) cerr << #x " => " << x << endl
#else
#define debug(x) 0
#endif
using lint = long long;
constexpr int INF = 1 << 30;
constexpr lint INFL = 1LL << 62;
constexpr int MOD = (int)1e9 + 7;
constexpr double EPS = 1e-9;
using namespace std;
namespace { struct INIT { INIT() { cin.tie(0); ios::sync_with_stdio(false); cout << fixed << setprecision(15); } } INIT; }
using Weight = int;
struct Edge {
int src, dst;
Weight weight;
Edge(void) {}
Edge(int src, int dst) : src(src), dst(dst) {}
Edge(int src, int dst, Weight weight) : src(src), dst(dst), weight(weight) {}
};
using Edges = vector<Edge>;
using Graph = vector<Edges>;
void edges_to_graph(Graph &graph, const Edges &edges, const int vertices, const bool directed = true) {
graph.resize(vertices);
for (const auto &e : edges) graph[e.src].emplace_back(e);
if (!directed) for (const auto &e : edges) graph[e.dst].emplace_back(Edge(e.dst, e.src, e.weight));
}
int main(void) {
int n, m;
cin >> n >> m;
Graph graph;
Edges edges(m);
rep (i, m) {
int s, t;
cin >> s >> t;
edges[i] = {--s, --t};
}
edges_to_graph(graph, edges, n);
vector<double> svp(n), nv(n);
svp[0] = 1;
rep (i, n - 1) {
double p = svp[i] / graph[i].size();
allrep (e, graph[i]) svp[e.dst] += p;
}
rrep (i, n - 1) {
double sum = 0;
allrep (e, graph[i]) sum += nv[e.dst];
nv[i] = sum / graph[i].size() + 1;
}
double maxdec = 0;
rep (i, n - 1) {
const int en = graph[i].size();
if (en == 1) continue;
double maxi = -1;
allrep (e, graph[i]) maxi = max(maxi, nv[e.dst]);
double newnv = ((nv[i] - 1) * en - maxi) / (en - 1) + 1;
maxdec = max(maxdec, (nv[i] - newnv) * svp[i]);
}
cout << nv[0] - maxdec << endl;
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | F - Fork in the Road |
| User | icia |
| Language | C++14 (GCC 5.4.1) |
| Score | 600 |
| Code Size | 2478 Byte |
| Status | AC |
| Exec Time | 30 ms |
| Memory | 5888 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 600 / 600 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | 00-sample-00, 00-sample-01, 00-sample-02 |
| All | 00-sample-00, 00-sample-01, 00-sample-02, 01-handmade-03, 01-handmade-04, 01-handmade-05, 01-handmade-06, 01-handmade-07, 01-handmade-08, 01-handmade-09, 02-small-10, 02-small-11, 02-small-12, 02-small-13, 02-small-14, 02-small-15, 02-small-16, 02-small-17, 02-small-18, 02-small-19, 02-small-20, 02-small-21, 02-small-22, 02-small-23, 02-small-24, 03-medium-25, 03-medium-26, 03-medium-27, 03-medium-28, 03-medium-29, 03-medium-30, 03-medium-31, 03-medium-32, 03-medium-33, 03-medium-34, 03-medium-35, 03-medium-36, 03-medium-37, 03-medium-38, 03-medium-39, 03-medium-40, 03-medium-41, 03-medium-42, 03-medium-43, 03-medium-44, 04-large-45, 04-large-46, 04-large-47, 04-large-48, 04-large-49, 04-large-50, 04-large-51, 04-large-52, 04-large-53, 04-large-54, 04-large-55, 04-large-56, 04-large-57, 04-large-58, 04-large-59, 04-large-60, 04-large-61, 04-large-62, 04-large-63, 04-large-64 |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 00-sample-00 | AC | 1 ms | 256 KiB |
| 00-sample-01 | AC | 1 ms | 256 KiB |
| 00-sample-02 | AC | 1 ms | 256 KiB |
| 01-handmade-03 | AC | 30 ms | 5888 KiB |
| 01-handmade-04 | AC | 30 ms | 5760 KiB |
| 01-handmade-05 | AC | 1 ms | 256 KiB |
| 01-handmade-06 | AC | 29 ms | 5632 KiB |
| 01-handmade-07 | AC | 1 ms | 384 KiB |
| 01-handmade-08 | AC | 9 ms | 1792 KiB |
| 01-handmade-09 | AC | 1 ms | 256 KiB |
| 02-small-10 | AC | 1 ms | 256 KiB |
| 02-small-11 | AC | 1 ms | 256 KiB |
| 02-small-12 | AC | 1 ms | 256 KiB |
| 02-small-13 | AC | 1 ms | 256 KiB |
| 02-small-14 | AC | 1 ms | 256 KiB |
| 02-small-15 | AC | 1 ms | 256 KiB |
| 02-small-16 | AC | 1 ms | 256 KiB |
| 02-small-17 | AC | 1 ms | 256 KiB |
| 02-small-18 | AC | 1 ms | 256 KiB |
| 02-small-19 | AC | 1 ms | 256 KiB |
| 02-small-20 | AC | 1 ms | 256 KiB |
| 02-small-21 | AC | 1 ms | 256 KiB |
| 02-small-22 | AC | 1 ms | 256 KiB |
| 02-small-23 | AC | 1 ms | 256 KiB |
| 02-small-24 | AC | 1 ms | 256 KiB |
| 03-medium-25 | AC | 1 ms | 256 KiB |
| 03-medium-26 | AC | 1 ms | 256 KiB |
| 03-medium-27 | AC | 1 ms | 256 KiB |
| 03-medium-28 | AC | 1 ms | 256 KiB |
| 03-medium-29 | AC | 2 ms | 384 KiB |
| 03-medium-30 | AC | 1 ms | 256 KiB |
| 03-medium-31 | AC | 1 ms | 256 KiB |
| 03-medium-32 | AC | 1 ms | 256 KiB |
| 03-medium-33 | AC | 1 ms | 256 KiB |
| 03-medium-34 | AC | 2 ms | 384 KiB |
| 03-medium-35 | AC | 1 ms | 256 KiB |
| 03-medium-36 | AC | 1 ms | 256 KiB |
| 03-medium-37 | AC | 2 ms | 384 KiB |
| 03-medium-38 | AC | 1 ms | 256 KiB |
| 03-medium-39 | AC | 1 ms | 256 KiB |
| 03-medium-40 | AC | 1 ms | 256 KiB |
| 03-medium-41 | AC | 1 ms | 256 KiB |
| 03-medium-42 | AC | 2 ms | 384 KiB |
| 03-medium-43 | AC | 2 ms | 384 KiB |
| 03-medium-44 | AC | 1 ms | 256 KiB |
| 04-large-45 | AC | 2 ms | 384 KiB |
| 04-large-46 | AC | 2 ms | 512 KiB |
| 04-large-47 | AC | 6 ms | 1152 KiB |
| 04-large-48 | AC | 9 ms | 1664 KiB |
| 04-large-49 | AC | 13 ms | 2560 KiB |
| 04-large-50 | AC | 2 ms | 384 KiB |
| 04-large-51 | AC | 2 ms | 512 KiB |
| 04-large-52 | AC | 6 ms | 1152 KiB |
| 04-large-53 | AC | 9 ms | 1792 KiB |
| 04-large-54 | AC | 15 ms | 2816 KiB |
| 04-large-55 | AC | 2 ms | 384 KiB |
| 04-large-56 | AC | 2 ms | 512 KiB |
| 04-large-57 | AC | 6 ms | 1152 KiB |
| 04-large-58 | AC | 9 ms | 1664 KiB |
| 04-large-59 | AC | 13 ms | 2432 KiB |
| 04-large-60 | AC | 2 ms | 384 KiB |
| 04-large-61 | AC | 2 ms | 512 KiB |
| 04-large-62 | AC | 6 ms | 1152 KiB |
| 04-large-63 | AC | 10 ms | 1920 KiB |
| 04-large-64 | AC | 16 ms | 2944 KiB |