大意:给一张图,每个图上有一个数,问以每个点为源点,经过的点包含k种数字的最小距离。

显然跑最短路会T,但我们注意到边权一定。某次学校考试就是类似题,可以bfs做,复杂度O(n),每种货物做一次,复杂度O(kn),n=1e5,k=100,稳了。

#include <algorithm>
#include <iostream>
#include <cstring>
#include <vector>
#include <cstdio>
#include <queue>
using namespace std;
const int N=1e5+8;
int n,m,ecnt,head[N],k,s,dis[N][105],cnt;
struct Edge{int to,nxt;}e[N<<1];
void add(int bg,int ed){e[++ecnt].to=ed;e[ecnt].nxt=head[bg];head[bg]=ecnt;}
vector<int>S[105];
void bfs(int x){
queue<int>q;
for(int i=0;i<S[x].size();i++)q.push(S[x][i]),dis[S[x][i]][x]=0;
while(!q.empty()){
int u=q.front();q.pop();
for(int i=head[u],v;i;i=e[i].nxt) {
v=e[i].to;
if (dis[v][x]>dis[u][x]+1) {dis[v][x]=dis[u][x]+1;q.push(v);}
}
}
}
int main() {
memset(dis,0x3f,sizeof dis);
scanf("%d%d%d%d",&n,&m,&k,&s);
for(int i=1,x;i<=n;i++) {scanf("%d",&x);S[x].push_back(i);}
for(int i=1,u,v;i<=m;i++){scanf("%d%d",&u,&v);add(u,v);add(v,u);}
for(int i=1;i<=k;i++)
bfs(i);
for(int i=1;i<=n;i++) {
// int mn=0x3f3f3f3f;
sort(dis[i]+1,dis[i]+1+k);
int ans=0;
for(int j=1;j<=s;j++) ans+=dis[i][j];
printf("%d ",ans);
}
}

[CodeForces]986A Fair的更多相关文章

  1. CodeForces - 986A Fair (BFS+贪心)

    题意:有N个点M条边的无向图,每个点有给定的ai(1<=ai<=K,K<=200)表示该点拥有的物品编号,保证1-K在N个点全部出现.求每个点收集S个不同的物品所要走过的最短路程(边 ...

  2. Codeforces 986A. Fair(对物品bfs暴力求解)

    解题思路: 1.对物品i bfs,更新每个小镇j获得每个物品i的最短距离. 2.时间复杂度o(n*k),满足2s的要求. 代码: #include <iostream> #include ...

  3. [Codeforces 864A]Fair Game

    Description Petya and Vasya decided to play a game. They have n cards (n is an even number). A singl ...

  4. CF 986A Fair——多源bfs

    题目:http://codeforces.com/contest/986/problem/A 如果从每个村庄开始bfs找货物,会超时. 发现k较小.那就从货物开始bfs,给村庄赋上dis[ 该货物 ] ...

  5. CodeForces - 987D Fair (BFS求最短路)

    题意:有N个城市,M条双向道路连接两个城市,整个图保证连通.有K种物品,但每个城市只有一种,现在它们都需要S种物品来举办展览,可以去其他城市获取该城市的物品,花费是两城市之间的最短路径长度.求每个城市 ...

  6. CF 986A Fair(多源BFS)

    题目描述 一些公司将在Byteland举办商品交易会(or博览会?).在Byteland有 nnn 个城市,城市间有 mmm 条双向道路.当然,城镇之间两两连通. Byteland生产的货物有 kkk ...

  7. 【反向多源点同时BFS一个强连通图+类最短路题面】Fair-986C-Codeforce

    借鉴博客:https://www.cnblogs.com/zhangjiuding/p/9112273.html 986-A. Fair /* 986-A-Fair,codeforce: 大致题意: ...

  8. codeforces 897A Scarborough Fair 暴力签到

    codeforces 897A Scarborough Fair 题目链接: http://codeforces.com/problemset/problem/897/A 思路: 暴力大法好 代码: ...

  9. Codeforces Round #485 (Div. 2) D. Fair

    Codeforces Round #485 (Div. 2) D. Fair 题目连接: http://codeforces.com/contest/987/problem/D Description ...

随机推荐

  1. Docker--微软dotconf截图

  2. MYSQL 源码解读系列 [线程池。。] ----dennis的博客

    http://blog.sina.com.cn/s/articlelist_1182000643_0_1.html

  3. POJ 2007

    直接求凸包,输出即可. #include <iostream> #include <cstdio> #include <cstring> #include < ...

  4. formValidator向struts2 ajax传參验证

    话不多说,直接上代码 页面head里面的formvalidator验证配置 <script type="text/javascript"> $(document).re ...

  5. sikuli运行错误:Traceback (most recent call last):

    错误信息: Traceback (most recent call last): File "C:\Users\wb-cailu.a\AppData\Local\Temp\sikuli-tm ...

  6. MySQL数据库——索引与视图

    索引 MySQL的索引包括普通索引.唯一性索引(unique index).全文索引(fulltext index).单列索引.多列索引和空间索引等. 1.索引的创建 ·创建表的时候创建索引 SQL语 ...

  7. C# 尝试读取或写入受保护的内存 。这通常指示其他内存已损坏。

    在C#中调用别人的DLL的时候有时候出现 尝试读取或写入受保护的内存 .这通常指示其他内存已损坏. 在传值的时候还是用指针,再在C#中做转换就好了. 解决办法: [DllImport("AP ...

  8. linux中udev简单的用法【转】

    本文转载自:http://blog.csdn.net/qq_29729577/article/details/50825134 udev是Linux提供的一种在用户态管理设备的一种机制,udev的详细 ...

  9. The current .NET SDK does not support targeting .NET Core 2.1. Either target .NET Core 2.0 or lower, or use a version of the .NET SDK that supports .NET Core 2.1.

    C:\Program Files\dotnet\sdk\2.1.4\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.TargetFrameworkInferenc ...

  10. 杂项:DS(目录服务)

    ylbtech-杂项:DS(目录服务) 1.返回顶部 1. DS(目录服务). 目录服务管理概述: 目录服务是扩展计算机系统中最重要的组件之一.虽然用户和管理通常不知道他们感兴趣对象的确切名称,但他们 ...