搜索

每次找出最短路 如果小于等于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的更多相关文章

随机推荐

  1. js中使用使用原型(prototype)定义方法的好处

    经常在前端面试或是和其他同行沟通是,在谈到构造在JS定义构造函数的方法是最好使用原型的方式:将方法定义到构造方法的prototype上,这样的好处是,通过该构造函数生成的实例所拥有的方法都是指向一个函 ...

  2. Sublime Text 前端插件推荐

    html/CSS快速编辑 --- Emment HTML CSS JS 美化插件 --- HTML/CSS/JS Prettyfy MarkDown 预览 --- MarkDown Preview J ...

  3. Android桌面悬浮清内存app概述

    今天闲来无事写了一个清内存的小东西,类似360,在桌面上悬浮,点击后清除后台无用程序,清除后台程序是通过调用ActivityManger.killBackgroundProcesses的方式来进行的, ...

  4. corsproxy

    安装完 node.js运行 npm install -g corsproxy安装完成 corsproxy

  5. 【android-cocos2d-X2.2 环境配置】在Mac下搭建Cocos2d-X-android开发环境!

    仅用于cocos2d-X2.2--cocos2d-X3.4 原文地址:http://blog.csdn.net/dingkun520wy/article/details/17097593 (1)下载 ...

  6. 【BZOJ 1070】[SCOI2007]修车

    Description 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需要安排这M位技术人员所维修的车及顺序,使 ...

  7. 微软职位内部推荐-Principal DEV Manager for Bing Client

    微软近期Open的职位: Title: Principal DEV Manager for Bing ClientGroup: Search Technology Center Asia, BingW ...

  8. 微软职位内部推荐-Senior SDE for Cloud Platform

    微软近期Open的职位: Microsoft Launched the public cloud service-Azure in China on May 2013, Cosmos is the k ...

  9. SQL一列多行字符串分组合并

    最近工作遇到如下数据:需要合并后只剩下两行的数据,普通的group by 是不能实现的.(如图) 利用如下SQL代码,即可实现需求(如图): 利用 stuff 函数实现分拆合并操作 select Te ...

  10. Extjs4.2布局——layout: accordion(Ext.layout.container.Accordion)

    API这样介绍这种布局: 示例:(来自API)注:打开默认展开第一个面板. Ext.create('Ext.panel.Panel', { title: 'Accordion Layout', wid ...