最小树形图(朱刘算法)\(+\) 二分答案。

由题意得,我们要在一些有向边中选出一些边,使\(0\)号节点能够到达其他节点,使距离之和\(\leqslant cost\),并且使每条边中的带宽的最小值最大。

为方便起见,我将\(0 \sim n-1\)号节点都\(++\),转为\(1 \sim n\)号节点。

第一个要求用最小树形图来解决,最小值最大用二分答案来解决,在二分时只选出带宽\(\geqslant mid\)的边,用选出的边求最小树形图,判断二分是否合法。

多组数据以及二分答案都涉及多次进行朱刘算法,记得清空。

\(code:\)

#include<bits/stdc++.h>
#define maxn 20010
#define maxc 1000000
#define inf 200000000
using namespace std;
template<typename T> inline void read(T &x)
{
x=0;char c=getchar();bool flag=false;
while(!isdigit(c)){if(c=='-')flag=true;c=getchar();}
while(isdigit(c)){x=(x<<1)+(x<<3)+(c^48);c=getchar();}
if(flag) x=-x;
}
int t,p,q,c,n,m,root,l,r,ans;
struct edge
{
int x,y,v,b;
}e[maxn],ed[maxn];
int id[maxn],pre[maxn],ine[maxn],vis[maxn];
int zhuliu()
{
int tot=0,cnt;
while(1)
{
cnt=0;
for(int i=1;i<=n;++i) ine[i]=inf,id[i]=vis[i]=0;
for(int i=1;i<=m;++i)
{
int x=e[i].x,y=e[i].y,v=e[i].v;
if(x!=y&&v<ine[y]) ine[y]=v,pre[y]=x;
}
for(int i=1;i<=n;++i)
if(i!=root&&ine[i]==inf)
return -1;
for(int i=1;i<=n;++i)
{
if(i==root) continue;
tot+=ine[i];
int y=i;
while(vis[y]!=i&&!id[y]&&y!=root)
{
vis[y]=i;
y=pre[y];
}
if(!id[y]&&y!=root)
{
id[y]=++cnt;
for(int x=pre[y];x!=y;x=pre[x]) id[x]=cnt;
}
}
if(!cnt) break;
for(int i=1;i<=n;++i)
if(!id[i])
id[i]=++cnt;
for(int i=1;i<=m;++i)
{
int x=e[i].x,y=e[i].y;
e[i].x=id[x],e[i].y=id[y];
if(id[x]!=id[y]) e[i].v-=ine[y];
}
root=id[root];
n=cnt;
}
return tot;
}
bool check(int x)
{
root=1,n=p,m=0;
for(int i=1;i<=q;++i)
if(ed[i].b>=x)
e[++m]=ed[i];
int get=zhuliu();
return get!=-1&&get<=c;
}
int main()
{
read(t);
while(t--)
{
read(p),read(q),read(c);
for(int i=1;i<=q;++i)
{
read(ed[i].x),read(ed[i].y),read(ed[i].b),read(ed[i].v);
ed[i].x++,ed[i].y++;
}
l=0,r=maxc,ans=-1;
while(l<=r)
{
int mid=(l+r)>>1;
if(check(mid)) ans=mid,l=mid+1;
else r=mid-1;
}
if(ans==-1) puts("streaming not possible.");
else printf("%d kbps\n",ans);
}
return 0;
}

题解 UVA11865 【Stream My Contest】的更多相关文章

  1. UVA-11865 Stream My Contest (朱-刘 算法+二分)

    题目大意:有一张n个顶点,m条边的有向图,根节点为0.每条边有两个权值,一个是费用c,一个是长度b.问在总费用不超过cost的情况下选出若干条边,使得n个点连通时的边的最短长度的最大值是多少. 题目分 ...

  2. 【UVA 11865】 Stream My Contest (二分+MDST最小树形图)

    [题意] 你需要花费不超过cost元来搭建一个比赛网络.网络中有n台机器,编号0~n-1,其中机器0为服务器,其他机器为客户机.一共有m条可以使用的网线,其中第i条网线的发送端是机器ui,接收端是机器 ...

  3. 题解——ATCoder AtCoder Grand Contest 017 B - Moderate Differences(数学,构造)

    题面 B - Moderate Differences Time limit : 2sec / Memory limit : 256MB Score : 400 points Problem Stat ...

  4. UVA 11865 Stream My Contest 组网 (朱刘算法,有向生成树,树形图)

    题意: 给n个点编号为0~n-1,0号点为根,给m条边(含自环,重边),每条边有个代价,也有带宽.给定c,问代价不超过c,树形图的最小带宽的最大值能达到多少? 思路: 点数才60,而带宽范围也不大,可 ...

  5. UVA 11865 Stream My Contest(最小树形图)

    题意:N台机器,M条有向边,总资金C,现要到搭建一个以0号机(服务器)为跟的网路,已知每条网线可以把数据从u传递到v,其带宽为d,花费为c,且d越大,传输速度越快,问能够搭建的传输速度最快的网络d值是 ...

  6. uvalive 11865 Stream My Contest

    题意: 有一个网络中心,和许多个城市,网络中心以及城市之间有若干条边,这些边有两个属性,最大带宽和修建费用. 现在要用最多不超过C的费用修建网络,使得每个城市都有网络连接,最大化最小带宽. 带宽限制是 ...

  7. UVA 11865 Stream My Contest (二分+最小树形图)

    题意:给定一个网络,一个服务器,其他的是客户机,有 m 条连线,每条有一个带宽和花费(单向边),让你用不超过 c 的花费,使得 0 到 所有的机器都能到达,并且使得最小带宽最大. 析:很明显是二分题, ...

  8. Stream My Contest UVA - 11865(带权最小树形图+二分最小值最大化)

    #include <iostream> #include <cstdio> #include <sstream> #include <cstring> ...

  9. AtCoder Beginner Contest 177 题解

    AtCoder Beginner Contest 177 题解 目录 AtCoder Beginner Contest 177 题解 A - Don't be late B - Substring C ...

随机推荐

  1. JUnit单元测试%MODULE_WORKING_DIR%' does not exist

    解决办法: idea > Run -> Edit Configurations>JUnit(或者application,根据自己报错的类型选择)>单独设置:选中有单元测试的类 ...

  2. 关于日期格式你必须知道的坑( yyyy-MM-dd HH:mm:ss)

    java中的的日期格式为: yyyy-MM-dd HH:mm:ss:代表将时间转换为24小时制,例: 2018-06-27 15:24:21yyyy-MM-dd hh:mm:ss:代表将时间转换为12 ...

  3. spring boot admin项目的集成和开发

    Spring Boot Admin是一个Github上的一个开源项目,它在Spring Boot Actuator的基础上提供简洁的可视化WEB UI,是用来管理 Spring Boot 应用程序的一 ...

  4. SSH网上商城三

    现在我们要实现下面的需求: 当用户点击左侧二级菜单选项的时候,在右侧要显示对应的该二级菜单项下面存在哪些商品,例如点击潮流女装,要在右侧分页显示该潮流女装下对应哪些商品 1.要分页显示 首先要获得该二 ...

  5. 【转载】张一鸣:为什么 BAT 挖不走我们的人才?

    很多企业失败的时候,总说是政策的变化.市场的变化.消费者需求的变化.技术发展的变化等等,导致了失败,其实这都是瞎说,归根结底还是人的原因,都是因为你招的人不行.可见,人才对于一个企业的重要性. 互联网 ...

  6. 四. django template模版

    往前端浏览器pull一些字符串,这些字符串是一些数据, 那如果想让这些数据按我们的某种格式美化一点/增加样式/图片,就需要用到django提供的模版--模版就是为了让数据看起更美观. 加载模版 dja ...

  7. 分布式配置中心(Native - Config)

    本章只讲 Spring Cloud 本地配置方式,可以很方便的高可用集群,且存在良好通讯,不用担心云服务器与内网之间GIT带来的不便,GIT(网上GIT教程一搜一大把了….) - 快速开始 Sprin ...

  8. Tomcat Filter之动态注入

    前言 最近,看到好多不错的关于"无文件Webshell"的文章,对其中利用上下文动态的注入Filter的技术做了一下简单验证,写一下测试总结,不依赖任何框架,仅想学习一下tomca ...

  9. C#6.0到C#8.0的新特性

    C#6.0新特性 C#7.0新特性 C#8.0新特性

  10. 常见的H5移动端Web页面Bug问题解决方案总汇

    解决jquery ajax调用远程接口的跨域问题 首先,接口必须允许远程调用.这是后端或者运维的事情.你必须保证你得到的一个接口是允许远程调用的.否则,就没啥了. $.ajax({ type:'get ...