hunnu 11152 Invasion 迪杰斯特拉 修改
来源:互联网 发布:蜜桃影院源码 编辑:程序博客网 时间:2024/06/16 18:44
http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11152
外星人要在一些点上建殖民地
定义安全位置为到达任意殖民地的距离都 >= k,
问每次扩展殖民地后的安全位置,
思路:每次统计危险位置的数目
#include <stdio.h>#include <string.h>#include <queue>#include <vector>using namespace std;#define N 10001#define inf 1000001#define pii pair<int,int>int dist[N];int vis[N],st[N];int m,n,a,k;int dan;vector < pii > vec[N];int dij(int src ){ dist[src] = 0; if(!vis[src]) { vis[src] = 1; ++dan; } priority_queue<pii > que; que.push(make_pair(0,src)); pii p; int u,v,i,c; while(!que.empty()) { p = que.top(); que.pop(); u = p.second; if(st[u])///剪枝 continue; int len = vec[u].size(); for(i = 0; i < len; ++i) { v = vec[u][i].second; c = vec[u][i].first; if(dist[u] + c < k)///剪枝 { if(!vis[v]) { ++dan; vis[v] = 1; } if(dist[u] + c < dist[v])///剪枝 { dist[v] = dist[u] + c; que.push(make_pair(dist[v],v)); } } } } return m - dan;}int main(){ while(scanf("%d%d%d%d",&m,&n,&a,&k)!= EOF && m) { int u,v,c; int i; while(n--) { scanf("%d%d%d",&u,&v,&c); vec[u].push_back(make_pair(c,v)); vec[v].push_back(make_pair(c,u)); } memset(vis,0,sizeof(vis)); memset(st,0,sizeof(st)); for(i = 1; i <=m; ++i) dist[i] = inf; dan = 0; while(a--) { scanf("%d",&u); printf("%d\n",dij(u)); st[u] = 1; } puts(""); for(i = 1; i <= m; ++i) vec[i].clear(); } return 0;}/*7 6 3 31 2 11 3 12 5 13 6 11 4 14 7 22141 0 1 110 0 0 0*/
- hunnu 11152 Invasion 迪杰斯特拉 修改
- Invasion - C# Style
- HZAU 1003 Alien invasion
- Google "invasion" into our desktop
- hunnu 10960 Maze
- hunnu 11090 ls _dp
- hunnu 11106 pseudoforest 图论
- hunnu 10922 二分答案
- HUNNU Contest 区间求最值
- hunnu--11548--找啊找啊找朋友
- hunnu 10682 Invitation Cards
- HUNNU---第八届校赛<混淆视听>
- UVA 6480 Zombie Invasion(模拟退火)
- BFS 蛇和梯子 HUNNU
- dp 水题 hunnu 10108 Entry
- hunnu 11126 Fighting for Triangles
- hunnu 11120 hidden code 暴力
- hunnu 11163 three lines #DFS
- NAT and Traversal NAT(TURN/STUN/ICE)
- GCC __attribute__ 和 link 脚本控制 section 基地址
- 基于linux的文件传输器实现详解----服务器端实现详解
- 黑马程序员_java多线程
- Linux伙伴系统(一)--伙伴系统的概述
- hunnu 11152 Invasion 迪杰斯特拉 修改
- aspectj does not support JDK class weaving
- ubuntu 下安装VMware tools 的方法
- GetWindowRect & GetClientRect
- 求伯君退休 老一代程序员时代结束
- 魔羯座2012年星座运势
- 分享成功程序员的多了,我写个反面的教材---一个高龄菜鸟程序员的工作经历
- 关于#pragma once
- 时间以及执行所有命令行参数