#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn = 1e5+11;
const int oo = 0x3f3f3f3f;
int to[maxn<<1],cost[maxn<<1],cap[maxn<<1],flow[maxn<<1],nxt[maxn<<1];
int head[maxn],tot;
void init(){
memset(head,-1,sizeof head);
tot=0;
}
void add(int u,int v,int c,int w){
to[tot]=v;
cap[tot]=c;
flow[tot]=0;
cost[tot]=w;
nxt[tot]=head[u];
head[u]=tot++;
swap(u,v);
to[tot]=v;
cap[tot]=0;
flow[tot]=0;
cost[tot]=-w;
nxt[tot]=head[u];
head[u]=tot++;
}
struct QUEUE{
int que[maxn];
int front,rear;
void init(){front=rear=0;}
void push(int x){que[rear++]=x;}
int pop(){return que[front++];}
bool empty(){return front==rear;}
}que;
int n,m,s,t;
bool vis[maxn];
int pre[maxn],dis[maxn];
bool spfa(){
que.init();
memset(vis,0,sizeof vis);
memset(pre,-1,sizeof pre);
memset(dis,oo,sizeof dis);
que.push(s);vis[s]=1;dis[s]=0;
while(!que.empty()){
int u=que.pop(); vis[u]=0;
for(int i = head[u]; ~i; i = nxt[i]){
int v=to[i],c=cap[i],f=flow[i],w=cost[i];
if(c>f&&dis[v]>dis[u]+w){
dis[v]=dis[u]+w;
pre[v]=i;
if(!vis[v]){
que.push(v);
vis[v]=1;
}
}
}
}
if(dis[t]==oo) return 0;
else return 1;
}
int mcmf(int &mc){
mc=0;int mf=0;
while(spfa()){
int tf=oo+1;
for(int i = pre[t]; ~i; i = pre[to[i^1]]){
tf=min(tf,cap[i]-flow[i]);
}
mf+=tf;
for(int i = pre[t]; ~i; i = pre[to[i^1]]){
flow[i]+=tf;
flow[i^1]-=tf;
}
mc+=dis[t]*tf;
}
return mf;
}
#define rep(i,j,k) for(int i = j; i <= k; i++)
#define repp(i,j,k) for(int i = j; i < k; i++)
#define repe(i,u) for(int i = head[u]; ~i; i = nxt[i])
#define scan(a) scanf("%d",&a)
#define scann(a,b) scanf("%d%d",&a,&b)
#define scannn(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define println(a) printf("%d\n",a)
#define printbk(a) printf("%d ",a)
#define print(a) printf("%d",a)
int main(){
int n1,m,a[maxn],b[maxn],c[maxn];
while(scan(n1)!=EOF){
if(n1==0)break;
init();
scan(m);
rep(i,1,m){
scannn(a[i],b[i],c[i]);
add(a[i],b[i],1,c[i]);add(b[i],a[i],1,c[i]);
}
s=n1+1;t=s+1;n=t;
add(s,1,2,0);add(n1,t,oo,0);
int mc;
int ans=mcmf(mc);
if(ans<2)printf("Back to jail\n");
else println(mc);
}
return 0;
}

最新文章

  1. [WCF编程]12.事务:Transaction类
  2. MySql数据库忘记root密码
  3. MSDN论坛被垃圾信息刷爆了!!!
  4. js:数据结构笔记11--排序算法(1)
  5. javascript判断非空
  6. 以下是关于Controller的一些Hint
  7. 【转】使用NDK生成native C/C++的可执行程序
  8. ios开发——实用技术篇&amp;网络音频播放
  9. Mac system快捷键
  10. jQuery选择器(一)
  11. SAP Crystal Dashboard Design 2011 win7 x64 安装
  12. SwipeListView 详解 实现微信,QQ等滑动删除效果
  13. 如何在submit上运行php文件
  14. js switch 用法
  15. FineUI开源版(ASP.Net)初学手册-部分JS整理
  16. 数据结构与算法之PHP排序算法(堆排序)
  17. [菜鸟]HTTP 与 HTTPS 的区别
  18. Spring入门学习笔记(2)——基于Java的配置
  19. a.call(b); call 方法
  20. cmder 设置

热门文章

  1. hadoop-eclipse-plugin-2.6.0-cdh5.4.0 插件编译
  2. Http 与Https
  3. Linux系统的安装(centos的下载地址:http://mirror.symnds.com/distributions/CentOS-vault/6.3/isos/i386/,选择:CentOS-6.3-i386-bin-DVD1.iso 这个下载并进行安装)
  4. 修改linux内核启动logo及显示位置
  5. set源码之心得
  6. C++ 私有构造函数的作用
  7. matlab 修改文件夹下所有文件名大写为小写
  8. 除了ROS ,机器人自主定位导航还能怎么做?
  9. ZROI2018普转提day2t2
  10. 9.Delegate类