POJ3921
搜索
每次找出最短路 如果小于等于k 那么必定这里有一点是要被删掉的
枚举这个最短路径上的每一个点 (一般不会超过20) 将其相邻边删除
用dijskra求最短路径并且保存即可
深度搜索
#include<cstdio>
#include<cstring>
#define maxn 1000000
bool kill[51],p[51][51],pd[51];
int dist[51],ans,n,m,k;
void dfs(int pans)
{
if(pans>=ans) return;
int i,j,pre[50],minj,minn;
for(i=1;i<=n;i++)
if(p[1][i]&&!kill[i]) {dist[i]=1;pre[i]=1;}
else dist[i]=maxn;
memset(pd,0,sizeof(pd));
dist[1]=0;
pd[1]=1;
for(i=2;i<=n;i++){
minn=maxn;
for(j=1;j<=n;j++)
if(dist[j]<minn&&!pd[j]){
minn=dist[j];
minj=j;
}
if(minn==maxn) break;
pd[minj]=1;
for(j=1;j<=n;j++)
if(dist[j]>dist[minj]+1&&!pd[j]&&p[minj][j]&&!kill[j]){
dist[j]=dist[minj]+1;
pre[j]=minj;
}
}
if(dist[n]<=k){
j=pre[n];
while(j!=1){
kill[j]=1;
dfs(pans+1);
kill[j]=0;
j=pre[j];
}
}
else if(ans>pans) ans=pans;
}
int main()
{
int i,j,x,y;
while(1){
ans=maxn;
scanf("%d%d%d",&n,&m,&k);
if(n==0) break;
memset(p,0,sizeof(p));
memset(kill,0,sizeof(0));
for(i=1;i<=m;i++){
scanf("%d%d",&x,&y);
p[x][y]=1;
}
dfs(0);
printf("%d\n",ans);
}
return 0;
}
POJ3921的更多相关文章
随机推荐
- mac下安装redis
安装php_redis.so 首先用git从https://github.com/nicolasff/phpredis下载源码.然后依次执行以下命令 sudo /Applications/XAMPP/ ...
- hadoop 文件 复制 移动 FileUtil.copy
FileSystem fs = FileSystem.get(conf); Path pattern = new Path(resultViewPath + "phone*"); ...
- Jqplot在joomla组件中的应用
(1)在com_collect组件中采用的是ajax获取json类型的值.[http://www.jqplot.com/tests/data-renderers.php]这上边有实例. (2)在jqp ...
- 针对PIL中ImageDraw.py报错的解决方案
linux mint 13开始就发现这个问题了,一直不知道怎么解决,今天突然发现了解决方案,来分享给大家 下面是修改对比,自己根据修改,这个是系统文件,需要root权限,路径/usr/lib/pyth ...
- linux下获得块设备大小
运行结果如下 jackie@Ubuntu:~/work/0602$ sudo ./a.out /dev/sda/dev/sda3907029168,2000398934016 //BLKGETSIZE ...
- Oracle回收站
回收站是删除对象使用的存储空间.可以使用实例参数recyclebin禁用回收站,默认是on,可以为某个会话或系统设置为off或on.所有模式都有一个回收站. 当表空间不足时可以自动重用回收站对象占用的 ...
- OFBIZ bug_create-component ERROR
开发环境:win7 64位 Eclipse 运行create-component,报一下错误: Buildfile: F:\workspace\opensource\apache-obiz\apach ...
- iOS:横向使用iPhone默认的翻页效果
大致思路使用两层辅助UIView的旋转来实现添加后的View的横向翻页效果 CATransform3D transformA = CATransform3DRotate(CATransform3DId ...
- easy ui datagrid 设置冻结列
为了冻结列,您需要定义 frozenColumns 属性.frozenColumn 属性和 columns 属性一样. $('#tt').datagrid({ title:'Frozen Column ...
- 对日期和时间的处理 NSCalendar
代码较老,供参考 NSCalendar用于处理时间相关问题.比如比较时间前后.计算日期所的周别等. 1. 创建或初始化可用以下方法 + (id)currentCalendar; 取得当前用户的逻辑日历 ...