diff --git a/FZOI/最小花费.cpp b/FZOI/最小花费.cpp new file mode 100644 index 0000000..d62b04f --- /dev/null +++ b/FZOI/最小花费.cpp @@ -0,0 +1,69 @@ +#include +#define lo long long +#define INF INT_MAX +#define LLM LONG_LONG_MAX + +using namespace std; +const int N = 1e7 + 10; +/* + toothless. #17 + @fredcss_dev +*/ + +int n, m; +struct Node +{ + int x; + double z; +}; +vector g[100001]; +double d[100001]; +bool b[100001]; +void asdf(int x) +{ + fill(d, d + 100001, 0x7f7f7f7f); + priority_queue> q; + d[x] = 100.0; + q.push(make_pair(100.0, x)); + while (!q.empty()) + { + int ax = q.top().second; + q.pop(); + if (b[ax] == 1) + { + continue; + } + b[ax] = 1; + for (int i = 0; i < g[ax].size(); i++) + { + if (d[ax] / g[ax][i].z < d[g[ax][i].x]) + { + q.push(make_pair(-d[ax] / g[ax][i].z, g[ax][i].x)); + d[g[ax][i].x] = d[ax] / g[ax][i].z; + } + } + } +} +signed main() +{ + scanf("%d", &n); + scanf("%d", &m); + for (int i = 1; i <= m; i++) + { + int x, y; + int z; + scanf("%d%d%d", &x, &y, &z); + Node u, p; + u.x = y; + u.z = 1 - z * 1.0 / 100.0; + p.x = x; + p.z = 1 - z * 1.0 / 100.0; + g[x].push_back(u); + g[y].push_back(p); + } + int s, t; + scanf("%d%d", &s, &t); + asdf(t); + printf("%.8lf", d[s]); + return 0; +} diff --git a/「USACO3.2」Sweet Butter.cpp b/Luogu/「USACO3.2」Sweet Butter.cpp similarity index 100% rename from 「USACO3.2」Sweet Butter.cpp rename to Luogu/「USACO3.2」Sweet Butter.cpp