CF 986A Fair——多源bfs
题目:http://codeforces.com/contest/986/problem/A
如果从每个村庄开始bfs找货物,会超时。
发现k较小。那就从货物开始bfs,给村庄赋上dis[ 该货物 ]。
但这样还是n^2。考虑有相同货物的村庄,其实可以一起bfs。就是多源bfs。这样就是n*k的了。
多源bfs就是把一些起始点的dis全赋了初值0,然后都放进队列里,之后正常bfs。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e5+,K=;
int n,m,k,s,head[N],xnt,dis[N][K],a[N],q[K][N],h,t[K];
struct Ed{
int next,to;
Ed(int n=,int t=):next(n),to(t) {}
}ed[N<<];
void add(int x,int y)
{
ed[++xnt]=Ed(head[x],y);head[x]=xnt;
ed[++xnt]=Ed(head[y],x);head[y]=xnt;
}
int main()
{
scanf("%d%d%d%d",&n,&m,&k,&s);
memset(dis,0x3f,sizeof dis);
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);dis[i][a[i]]=;
q[a[i]][++t[a[i]]]=i;
}
int x,y;
for(int i=;i<=m;i++)
{
scanf("%d%d",&x,&y);add(x,y);
}
for(int i=;i<=k;i++)
{
h=;
while(h<=t[i])
{
int k=q[i][h++];
for(int j=head[k],v;j;j=ed[j].next)
if(dis[v=ed[j].to][i]>dis[k][i]+)
{
dis[v][i]=dis[k][i]+;q[i][++t[i]]=v;
}
}
}
for(int i=;i<=n;i++)
{
int ans=;sort(dis[i]+,dis[i]+k+);
for(int j=;j<=s;j++)ans+=dis[i][j];
printf("%d ",ans);
}
return ;
}
CF 986A Fair——多源bfs的更多相关文章
- CF 986A Fair(多源BFS)
题目描述 一些公司将在Byteland举办商品交易会(or博览会?).在Byteland有 nnn 个城市,城市间有 mmm 条双向道路.当然,城镇之间两两连通. Byteland生产的货物有 kkk ...
- 牛客网 牛客练习赛7 D. 珂朵莉的无向图(多源BFS)
题目链接 Problem D 比赛的时候完全想不到 直接对给定的这些点做多源$BFS$,把给定的这些点全都压到队列里,然后一个个做. 最后统计被访问的点的个数即可. #include <bit ...
- bzoj 2252 [ 2010 Beijing wc ] 矩阵距离 —— 多源bfs
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2252 又没能自己想出来... 一直在想如何从每个1开始广搜更新答案,再剪剪枝,什么遇到1就不 ...
- CodeForces - 986A Fair (BFS+贪心)
题意:有N个点M条边的无向图,每个点有给定的ai(1<=ai<=K,K<=200)表示该点拥有的物品编号,保证1-K在N个点全部出现.求每个点收集S个不同的物品所要走过的最短路程(边 ...
- Codeforces 986A. Fair(对物品bfs暴力求解)
解题思路: 1.对物品i bfs,更新每个小镇j获得每个物品i的最短距离. 2.时间复杂度o(n*k),满足2s的要求. 代码: #include <iostream> #include ...
- CF #375 (Div. 2) D. bfs
1.CF #375 (Div. 2) D. Lakes in Berland 2.总结:麻烦的bfs,但其实很水.. 3.题意:n*m的陆地与水泽,水泽在边界表示连通海洋.最后要剩k个湖,总要填掉多 ...
- CF 520 B. Two Buttons(bfs)
/*题意:一个数,就是输入的第一个数,让它变成第二个数最少用几步.可以点红色按钮,蓝色按钮来改变数字,红色:*2,蓝色:-1,如果变成负数,就变成原来的数.CF 520 B. Two Buttons思 ...
- CF986A Fair【图论/BFS】
[题意]: 有些公司将在Byteland举办公平的会议.Byteland的n个城镇,m条两镇之间的双向道路.当然,你可以使用道路从任一个城镇到达任何城镇. 有k种商品产自Byteland,并且每个城镇 ...
- cf.295.B Two Buttons (bfs)
Two Buttons time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
随机推荐
- 【HackerRank】Bus Station
有n组好朋友在公交车站前排队.第i组有ai个人.还有一辆公交车在路线上行驶.公交车的容量大小为x,即它可以同时运载x个人. 当车站来车时(车总是空载过来),一些组从会队头开始走向公交车. 当然,同一组 ...
- mysql多表查询原理
转:https://www.cnblogs.com/Toolo/p/3634563.html MySQL的多表查询(笛卡尔积原理) 先确定数据要用到哪些表. 将多个表先通过笛卡尔积变成一个表. 然 ...
- Windos Server 2008 NFS 服务安装使用
系统环境:Windos 2008 R2 x64位 安装服务:NFS 文件服务 我的电脑-->右击管理-->功能-->添加功能 选择网络文件系统服务工具 安装服务 添加角色 下一步 选 ...
- 【P2476】着色方案(记忆化搜索+特殊的DP数组)
这个题代码难度几乎为0,然而思维难度对于蒟蒻来说简直是突破天际啊!首先我思考的是这个油漆的种类只有15种,是不是可以像一道叫做8数码难题的东西暴力15维数组呢..计算发现不可以....空间会直接让你学 ...
- Email-Ext Plugin install ------ Jenkins Plugins
一.基本信息 1. Email-Ext Plugin功能简介 支持Jenkins邮件发送时,自定义邮件内容功能.详情可以查看jenkins的wiki : https://wiki.jenkins-ci ...
- Android 开发工具(android studio )安装中的问题记录
第一个问题,下载安装android studio . 由于国内无法通过正常方式访问谷歌官网,所以下载的确是个问题,在我仔细寻找下,发现下面两个网站可以下载: 第一个:http://www.androi ...
- review15
不同区域的星期格式 不同国家的星期的简称或全称有很大的不同.如果想用特定地区的星期格式来表示日期中的星期,可以用format的重载方法: format(Locale locale, 格式化模式,日期列 ...
- tomcat配置 启动
<Context docBase="E:\apache-tomcat-7.0.50\wtpwebapps\mycms" path="" reloadab ...
- 《Think in Java》(九)接口
接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法: 抽象化类则是普通类与接口之间的一种中庸之道: 涨姿势了 接口也可以拥有值属性,但它们都是隐式的 static 和 final 的: 接 ...
- 《Think in Java》(六)访问权限控制
类访问权限:public,default(包访问权限的类,在包外可以调用该类的static成员) 类属性访问权限:public,protected,default,private