解题思路:

  1.对物品i bfs,更新每个小镇j获得每个物品i的最短距离。

  2.时间复杂度o(n*k),满足2s的要求。

代码:

#include <iostream>
#include <queue>
#include <list>
#include <algorithm>
#include <stdio.h>
#include <string.h>
using namespace std;
typedef long long ll;
#define MAX 2000000000 int a[];
list <int> e[];
int d[][];
bool used[];
queue <int> q; int main(){
// fill(d[0],d[0]+500050*110,MAX);
int n,m,k,s;
scanf("%d%d%d%d", &n, &m, &k, &s);
for(int i = ;i <= n; ++i){
scanf("%d", &a[i]);
}
int u,v;
for(int i = ;i <= m; ++i){
scanf("%d%d", &u, &v);
e[u].push_back(v);
e[v].push_back(u);
}
for(int i = ;i <= k; ++i){
memset(used,false,sizeof(used));
for(int j = ;j <= n; ++j){
if(a[j] == i){
d[j][i] = ;
q.push(j);
used[j] = true;
}
}
while(q.size()){
int x = q.front();
for(auto l:e[x]){
if(!used[l]){
d[l][i] = d[x][i]+;
used[l] = true;
q.push(l);
}
}
q.pop();
}
}
for(int i = ;i <= n; ++i){
sort(d[i]+,d[i]++k);
int ans = ;
for(int j = ;j <= s; ++j){
ans += d[i][j];
}
printf("%d ",ans);
}
printf("\n");
return ;
}

最新文章

  1. CCNA实验1.port-security
  2. Samsung_tiny4412(驱动笔记01)----linux 3.5,U-Boot,Busybox,SD卡启动环境搭建
  3. smarty模板的基础搭建
  4. HDU 4465 - Candy(概率与数学优化)
  5. 客户端脚本语言javascript
  6. mongodb 学习笔记 09 -- shard分片
  7. SVG基础
  8. 转:shell比较两个字符串是否相等
  9. HTTP协议的请求和响应学习
  10. NullPointerException
  11. springcloud(三):服务提供与调用
  12. Java设计模式汇总
  13. js 在iframe子页面获取父页面元素,或在父页面 获取iframe子页面的元素的几种方式
  14. Python学习笔记第二十六周(Django补充)
  15. pca , nmds , pcoa 图添加分组的椭圆
  16. Java IO留存查看
  17. 20155229《网络对抗技术》Exp8:Web基础
  18. UML类图之间的关系
  19. mysql出现Too many connections的解决...
  20. Spring Boot war包&amp;jar包对比

热门文章

  1. java代码实现python2中aes加密经历
  2. 一.Windows I/O模型之选择(select)模型
  3. X Macro
  4. [USACO18JAN] MooTube (离线并查集)
  5. 八、frps服务端与nginx可共用80端口
  6. 洛谷10月月赛II
  7. ajax简单操作,验证用户名是否可以
  8. 接口测试及接口Jmeter工具介绍
  9. CSS3特效——六面体
  10. ZOJ 3288 Domination