[CF] 986 A. Fair
http://codeforces.com/problemset/problem/986/A
n个点的无向连通图,每个点有一个属性,求每个点到s个不同属性点的最短距离
依稀记得那天晚上我和Menteur-Hxy探讨这道题如何不可做的样子
直观想法当然是每个点出发bfs,找到s个就停止,但这最差是n^2的,不能接受!
解法是多源广搜,注意到货物种类非常小(<=100),所以可以求出每个点获得每种货物的最短距离。
做法是进行k次bfs,对于第i次,起点st是每个种类为i的点,广搜的性质决定了她们的平行关系。
这样就可以求出每种货物到每个点的距离,换言之,就是每个点获得每种货物的代价(最小)
然后对于每个点,答案就是最小的s个啦
无向图注意开两倍边
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<vector>
#include<queue> using namespace std; const int MAXN=; inline int rd(){
int ret=,f=;char c;
while(c=getchar(),!isdigit(c))f=c=='-'?-:;
while(isdigit(c))ret=ret*+c-'',c=getchar();
return ret*f;
} struct Edge{
int next,to;
}e[MAXN<<];
int ecnt,head[MAXN];
inline void add(int x,int y){
e[++ecnt].to = y;
e[ecnt].next = head[x];
head[x] = ecnt;
} int dis[MAXN][],typ[MAXN];
//dis[i][j] - the minimum cost for town i to get the j-th goods int n,m,k,s; queue<int> Q;
void bfs(int x){
for(int i=;i<=n;i++) if(typ[i]==x) Q.push(i),dis[i][x]=;
while(!Q.empty()){
int top=Q.front();Q.pop();
for(int i=head[top];i;i=e[i].next){
int v=e[i].to;
if(dis[v][x]>dis[top][x]+){
dis[v][x]=dis[top][x]+;
Q.push(v);
}
}
}
} void init(){
memset(dis,0x3f,sizeof(dis));
} vector<int> V; int main(){
n=rd();m=rd();k=rd();s=rd();
init();
for(int i=;i<=n;i++) typ[i]=rd();
int x,y,w;
for(int i=;i<=m;i++){
x=rd();y=rd();
add(x,y);add(y,x);
}
for(int i=;i<=k;i++) bfs(i);
int ret=;
for(int i=;i<=n;i++){
V.clear();
for(int j=;j<=k;j++) V.push_back(dis[i][j]);
sort(V.begin(),V.end());
ret=;
for(int j=;j<s;j++) ret+=V[j];
printf("%d ",ret);
}
return ;
}
[CF] 986 A. Fair的更多相关文章
- CF 987 D. Fair
D. Fair http://codeforces.com/contest/987/problem/D 题意: n个城镇m条道路,(保证没有重边,两个城镇间可以到达),每个城镇拥有的特产ai(可能多个 ...
- Winniechen’s test1
https://winniechen.cn/wp-content/uploads/2018/08/Winniechens_test_1.rar 放水练习赛,主要考察最短路,DP,状态压缩等知识点 题解 ...
- Codeforces CF#628 Education 8 F. Bear and Fair Set
F. Bear and Fair Set time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- CF 1083 B. The Fair Nut and Strings
B. The Fair Nut and Strings 题目链接 题意: 在给定的字符串a和字符串b中找到最多k个字符串,使得不同的前缀字符串的数量最多. 分析: 建出trie树,给定的两个字符串就 ...
- CF 1083 A. The Fair Nut and the Best Path
A. The Fair Nut and the Best Path https://codeforces.com/contest/1083/problem/A 题意: 在一棵树内找一条路径,使得从起点 ...
- CF 986A Fair——多源bfs
题目:http://codeforces.com/contest/986/problem/A 如果从每个村庄开始bfs找货物,会超时. 发现k较小.那就从货物开始bfs,给村庄赋上dis[ 该货物 ] ...
- CF D. Fair(思维+DFS)
http://codeforces.com/contest/987/problem/D 题目大概: 给出一个n个城镇m条边的图,给出每个城镇拥有的特产(可能多个城镇有相同特产).有k种不同特产. 要求 ...
- CF 986A Fair(多源BFS)
题目描述 一些公司将在Byteland举办商品交易会(or博览会?).在Byteland有 nnn 个城市,城市间有 mmm 条双向道路.当然,城镇之间两两连通. Byteland生产的货物有 kkk ...
- ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by 'inst 1, osid 5166'
凌晨收到同事电话,反馈应用程序访问Oracle数据库时报错,当时现场现象确认: 1. 应用程序访问不了数据库,使用SQL Developer测试发现访问不了数据库.报ORA-12570 TNS:pac ...
随机推荐
- 如何在Template Codes 中能够加载所在的Project的Assembly,获取所有Type
1.首先要获取Project对象 2.分析得到Project对象生成的bin路径,也就是$(TargetPath) 3.Assembly.LoadFromFile( binpath ) 4.asm.G ...
- bzoj 3261 最大异或和【可持久化trie】
因为在后面加数字又求后缀和太麻烦,所以xor[p...n]=xor[1...n]^xor[p-1...n]. 首先处理出来区间异或前缀和,对前缀和建trie树(在最前面放一棵0表示最开始的前缀和 然后 ...
- CCF2016.4 - C题
思路:先把路径按反斜杠split成数组,然后用一个ArrayList去模拟.如果遇到空或者.则不处理:如果遇到..则删除ArrayList最后一个元素(注意如果只有1个元素则不删除):其他情况直接加到 ...
- [MySQL] LIMIT 分页优化
背景:LIMIT 0,20 这种分页方式,随着 offset 值的不断增大,当达到百万级时,一条查询就需要1秒以上,这时可以借助索引条件的查询来优化. SQL:select * from member ...
- LightOj 1088 - Points in Segments (二分枚举)
题目链接: http://www.lightoj.com/volume_showproblem.php?problem=1088 题目描述: 给出一个n位数升序排列的数列,然后q个查询,每个查询问指定 ...
- Python+selenium定位不到元素的问题及解决方案
在操作过程中主要遇到两种阻塞的问题,总结如下: 1.页面中有iframe,定位元素时,需要用switch_to.frame()转换到元素所在的frame上再去定位 2.遇到一种新情况,有些按钮在htm ...
- 通过表单展示不一样的页面(input对象)
表单中包含不一样的样式,不同功能的提交数据的方式.在许多页面中,浏览者不经意间已经不断在使用表单的功能,如留言,设置自己的密码或者是复选框,下拉列表等. input对象下的多种表单表现形式: 通常在页 ...
- Package 和 import 语句
- android开发学习 ------- 枚举类型在Android中的用法
一般上为了简化代码,重用代码,设置标志位来表示不同的流程,这个标志位可以使用枚举类型来表示: 1:定义 public FbManner fbManer = FbManner.EMAIL; //给一个默 ...
- apt-get的一些坑
apt-get update:更新安装列表apt-get upgrade:升级软件apt-get install software_name :安装软件apt-get --purge remove ...