这个题似曾相识啊,以前是用搜索剪枝+0/1边权bfs做的(题面可以参照上一篇这个题的博客)。

有一类问题就是求 包含若干关键点的最小强联通子图大小是多少。

如果关键点数量是变量,那么就是NP问题了。。。

对于本题来说,关键点数量=2,就可以直接dp啦。

设一个走正向边的点p和一个走逆向边的点q,f[i][j] 即是 p在i且q在j最少经过的点数,转移的话把去的路径伸直然后在纸上画一画,发现总共有三种:

1.i向后扩展一个点

2.j向后扩展一个点

3.i,j通过i到j的最短路径互换位置。

因为状态图并不是dag,所以跑个dij就可以了。

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=205;
#define pb push_back int n,m,f[N][N],ans,to[N*2];
int ne[N*2],hd[N],num,d[N][N];
bool v[N][N]; struct node{
int x,y;
bool operator <(const node &u)const{
return f[x][y]>f[u.x][u.y];
}
};
priority_queue<node> q; inline void add(int x,int y){ to[++num]=y,ne[num]=hd[x],hd[x]=num;} inline void solve(){
for(int i=1;i<=n;i++) d[i][i]=0;
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++) if(d[i][k]+d[k][j]<d[i][j]) d[i][j]=d[i][k]+d[k][j]; f[1][1]=1; node x;
q.push((node){1,1}); while(!q.empty()){
x=q.top(),q.pop();
// cout<<x.x<<' '<<x.y<<' '<<f[x.x][x.y]<<endl; if(v[x.x][x.y]) continue;
v[x.x][x.y]=1; if(x.x!=x.y&&f[x.x][x.y]+d[x.x][x.y]<=f[x.y][x.x]){
f[x.y][x.x]=f[x.x][x.y]+d[x.x][x.y]-1;
q.push((node){x.y,x.x});
} for(int i=hd[x.x];i;i=ne[i]) if((i&1)&&f[x.x][x.y]+(to[i]!=x.y)<f[to[i]][x.y]){
f[to[i]][x.y]=f[x.x][x.y]+(to[i]!=x.y);
q.push((node){to[i],x.y});
} for(int i=hd[x.y];i;i=ne[i]) if(!(i&1)&&f[x.x][x.y]+(to[i]!=x.x)<f[x.x][to[i]]){
f[x.x][to[i]]=f[x.x][x.y]+(to[i]!=x.x);
q.push((node){x.x,to[i]});
}
} ans=f[2][2]?f[2][2]:-1;
} int main(){
// freopen("data.in","r",stdin);
// freopen("data.out","w",stdout); memset(d,0x3f,sizeof(d));
memset(f,0x3f,sizeof(f)); scanf("%d%d",&n,&m);
int uu,vv;
for(int i=1;i<=m;i++){
scanf("%d%d",&uu,&vv);
add(uu,vv),add(vv,uu);
d[uu][vv]=1;
} solve(); printf("%d\n",ans);
return 0;
}

  

[COCI2011-2012#7] KAMPANJA的更多相关文章

  1. Windows server 2012 添加中文语言包(英文转为中文)(离线)

    Windows server 2012 添加中文语言包(英文转为中文)(离线) 相关资料: 公司环境:亚马孙aws虚拟机 英文版Windows2012 中文SQL Server2012安装包,需要安装 ...

  2. Windows Server 2012 NIC Teaming介绍及注意事项

    Windows Server 2012 NIC Teaming介绍及注意事项 转载自:http://www.it165.net/os/html/201303/4799.html Windows Ser ...

  3. 1.初始Windows Server 2012 R2 Hyper-V + 系统安装详细

    干啥的?现在企业服务器都是分开的,比如图片服务器,数据库服务器,redis服务器等等,或多或少一个网站都会用到多个服务器,而服务器的成本很高,要是动不动采购几十台,公司绝对吃不消的,于是虚拟化技术出来 ...

  4. 0.Win8.1,Win10,Windows Server 2012 安装 Net Framework 3.5

    后期会在博客首发更新:http://dnt.dkill.net 网站部署之~Windows Server | 本地部署:http://www.cnblogs.com/dunitian/p/482280 ...

  5. windows 2012 r2 can't find kb2919355

    问题   解决: 1.手动安装了 Windows8.1-KB2919442-x64 2.手动下载 KB2919355 更新成功     Turns out to have been a result ...

  6. Windows Server 2012 磁盘管理之 简单卷、跨区卷、带区卷、镜像卷和RAID-5卷

    今天给客户配置故障转移群集,在Windows Server 2012 R2的系统上,通过iSCSI连接上DELL的SAN存储后,在磁盘管理里面发现可以新建 简单卷.跨区卷.带区卷.镜像卷.RAID-5 ...

  7. VMware下Windows Server 2012添加新磁盘

    系统管理员在VM下新装了一台Windows Server 2012服务器,我在上面安装了SQL Server 2014 Standard版数据库,安装之初,只分配了一个C盘,我想在这台服务器上添加了三 ...

  8. 在Windows Server 2012中如何快速开关桌面上经典的“计算机、我的文档”等通用图标

    我们都知道,在Windows Server 2012系列的服务器版本中都已经引入了Modern的现代界面作为默认的用户交互界面,同时满足视觉一致化,新版的服务器管理程序也做成了扁平化.因此传统的计算机 ...

  9. VmWare平台Windows Server 2012 无响应宕机

    我们生产服务器都部署在VMware ESXi 5.5平台上,最近大半年的时间,偶尔就会出现操作系统为Windows Servre 2012的服务器出现没有任何响应(unresponsive)的情况,出 ...

  10. SQL Server 2012 新特性:服务角色管理

    数据库角色管理,已经可以使用alter role,create role和drop role. 2012增加了几个ddl语句,可以操作服务级别的角色管理,   CREATE SERVER ROLE 用 ...

随机推荐

  1. HDU 1180 诡异的楼梯 (广搜)

    题目链接 Problem Description Hogwarts正式开学以后,Harry发现在Hogwarts里,某些楼梯并不是静止不动的,相反,他们每隔一分钟就变动一次方向. 比如下面的例子里,一 ...

  2. JS对象操作

    一.String常用操作 1.截取 substr(start,length) //返回从指定位置开始的指定长度的字符串. substring(start,end) //返回两个指定的位置之间的字符串. ...

  3. 大聊Python----协程

    协程 协程,又称微线程,纤程.英文名Coroutine.一句话说明什么是线程:协程是一种用户态的轻量级线程. 协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来 ...

  4. 大聊Python----SocketServer

    什么是SocketServer? SocketServer的最主要的作用是实现并发处理,也就是可以多个用户同时上传和下载文件. socketserver模块简化了编写网络服务器的任务. sockets ...

  5. 记一次Node项目的优化

    这两天针对一个Node项目进行了一波代码层面的优化,从响应时间上看,是一次很显著的提升.一个纯粹给客户端提供接口的服务,没有涉及到页面渲染相关. 背景 首先这个项目是一个几年前的项目了,期间一直在新增 ...

  6. Python 对象模型 -- (转)

    面向对象的纯粹性 在很久很久以前,C++还被称为面向对象语言(现在一般称为多范式通用语言),人们就对C++的面向对象的纯粹性提出了质疑,主要有以下几点: 并非所有的对象都是对象(很拗口?),比如指针本 ...

  7. HTTP响应码摘自apach官网

    HTTP状态列表 响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行. 响应码分五种类型,由它们的第一位数字表示: 1xx:信息,请求收到,继续处理 2xx:成功,行为被成功地接 ...

  8. Linux中断(interrupt)子系统之二:arch相关的硬件封装层【转】

    转自:http://blog.csdn.net/droidphone/article/details/7467436 Linux的通用中断子系统的一个设计原则就是把底层的硬件实现尽可能地隐藏起来,使得 ...

  9. imx6设备树pinctrl解析【转】

    转自:http://blog.csdn.net/michaelcao1980/article/details/50730421 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在移植linu ...

  10. sicily 1063. Who's the Boss

    Time Limit: 1sec    Memory Limit:32MB  Description Several surveys indicate that the taller you are, ...