关注
代码写得比较丑。。求轻喷 #include <bits/stdc++.h>
using namespace std;
int cap[210];
int rd[210];
vector<int> toporder;
vector<int> G[210];
double tim[210];
double power[210];
bool vis[210];
void dfs(int cur)
{
vis[cur] = true;
tim[cur] = 0.0;
for (auto to : G[cur])
if (!vis[to])
dfs(to);
}
void topsort(int n)
{
toporder.clear();
queue<int> q;
for (int i = 1; i <= n; i++)
if (rd[i] == 0)
q.push(i);
while (!q.empty())
{
int cur = q.front();q.pop();
toporder.push_back(cur);
for (auto to : G[cur])
{
rd[to]--;
if (rd[to] == 0)
q.push(to);
}
}
}
int main()
{
int t;
scanf("%d", &t);
while (t--)
{
int n, m, b, e;
scanf("%d%d%d%d", &n, &m, &b, &e);
for (int i = 1; i <= n; i++)
scanf("%d", cap + i), rd[i] = 0, vis[i] = false, G[i].clear(), tim[i] = -1.0;
int from, to;
for (int i = 0; i < m; i++)
{
scanf("%d%d", &from, &to);
G[from].push_back(to);
rd[to]++;
}
if (e > 0)
{
dfs(b);
topsort(n);
for (int i = 1; i <= n; i++)
{
if (tim[i] == -1.0)
continue;
double l = 0.0, r = 65536.0*65536.0*200.0;
for (int j = 0; j < 50; j++)
{
double mid = (l + r) / 2;
for (int l = 1; l <= n; l++)
power[l] = 0;
power[b] = e * mid;
int k = 0;
while (toporder[k] != i)
{
int cur = toporder[k];
if (power[cur] >= cap[cur])
for (auto to : G[cur])
power[to] += (power[cur] - cap[cur]) / G[cur].size();
k++;
}
if (power[i] >= cap[i])
r = mid;
else
l = mid;
}
tim[i] = (l + r) / 2.0;
}
}
printf("%.4f", tim[1]);
for (int i = 2; i <= n; i++)
printf(" %.4f", tim[i]);
puts("");
}
return 0;
}
查看原帖
点赞 2
相关推荐
点赞 评论 收藏
分享
05-03 11:27
Johns Hopkins University 算法工程师 点赞 评论 收藏
分享

点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 我的实习收获 #
29932次浏览 497人参与
# 如果有时光机,你最想去到哪个年纪? #
47061次浏览 800人参与
# 实习吐槽大会 #
31521次浏览 153人参与
# 非技术岗简历怎么写 #
209695次浏览 2860人参与
# 晒一晒你的工位 #
85649次浏览 304人参与
# 26届秋招投递记录 #
3649次浏览 102人参与
# 2025牛客秋招季 #
3959次浏览 122人参与
# 双非能在秋招上岸吗? #
215150次浏览 1142人参与
# 被AI治愈的瞬间 #
52294次浏览 597人参与
# 怎么防止在试用期被辞退 #
122301次浏览 911人参与
# 我的租房踩坑经历 #
27112次浏览 279人参与
# 穿越回高考你还会选现在的专业吗 #
21463次浏览 266人参与
# 我和mentor的爱恨情仇 #
43459次浏览 277人参与
# 打工人的工作餐日常 #
40422次浏览 343人参与
# 软开人,说说你的烦心事 #
48061次浏览 359人参与
# 毕业旅行去哪玩儿 #
1223次浏览 33人参与
# 硬件/芯片公司工作体验 #
75178次浏览 664人参与
# 商战,最累的是我们 #
13027次浏览 52人参与
# 打工人锐评公司红黑榜 #
145908次浏览 919人参与
# 25届秋招公司红黑榜 #
262149次浏览 1094人参与