简直了非常迷 看到题目毫不犹豫的写了一个网络流,然后果真就TLE了

翻了一下题解,就是最大流最小割定理然后,然后将平面图变成对偶图,相当于是从起点到终点跑一个最短路就可以了

神马居然还有这种操作??!

呃加边那个位置是挺复杂的,但是我写对了呀~

还有一个非常迷的地方就是非要用结构体来存边吗我怎么一用数组就WA啊这是什么歪理是不是BZOJ的评测机有bug

至今不知道为什么邻接表会写挂完蛋没救了

#include<cstdio> 
#include<iostream> 
#include<queue> 
#include<algorithm> 
#include<cmath> 
#include<cstring> 
#include<cstdlib> 
using namespace std; 
const int inf=0x3f3f3f3f; 
int n,m; 
int head[2000000+20]; 
int dis[2000000+20]; 
int inq[2000000+20],next[2000000],to[6000000+20]; 
struct node 
    int v,w; 
}e[6000000+20]; 
int k; 
int S,T; 
inline int RD()
{
    char ch;
    int res=0;
    ch=getchar();
    while(ch<'0'||ch>'9')ch=getchar();
    res=ch-'0';
    while((ch=getchar())>='0'&&ch<='9')res=res*10+ch-'0';
    return res;
}
void addedge(int u,int v,int w) 
{
    next[++k]=head[u];
    e[k].v=v; 
    to[k]=e[k].v;
    e[k].w=w; 
    head[u]=k;
         
    next[++k]=head[v];
    e[k].v=u; 
    to[k]=e[k].v;
    e[k].w=w; 
    head[v]=k; 
void spfa() 
    memset(dis,inf,sizeof(dis)); 
    memset(inq,0,sizeof(inq)); 
    queue<int>q; 
    dis[S]=0; 
    inq[S]=1; 
    q.push(S); 
    while(!q.empty()) 
    
        int now=q.front(); 
        q.pop(); 
        inq[now]=0; 
        for(int i=head[now];i!=-1;i=next[i]) 
        
            int v=to[i];
            v=e[i].v; 
            if(dis[now]+e[i].w<dis[v]) 
            
                dis[v]=dis[now]+e[i].w; 
                if(!inq[v]) 
                
                    inq[v]=1; 
                    q.push(v); 
                
            
        
    
    printf("%d\n",dis[T]); 
int main() 
    memset(head,-1,sizeof(head));
    memset(to,0,sizeof(to)); 
    k=0; 
    scanf("%d%d",&n,&m); 
    if (n == 1 || m == 1) 
    
        if (n > m) swap(n, m); 
        int ans = inf; 
        for (int i = 1; i < m; ++i) 
        
            int x; 
            scanf("%d",&x); 
            if (x < ans) ans = x; 
        
        printf("%d\n", ans); 
        exit(0); 
    
    S=0,T=2*(m-1)*(n-1)+1; 
    int w; 
    for(int i=1;i<=n;i++)
      for(int j=1;j<m;j++)
       if(i==1) addedge(j*2,0,RD());
        else if(i==n)addedge(T,2*((i-2)*(m-1)+j)-1,RD());
             else addedge(2*((i-2)*(m-1)+j)-1,2*((i-1)*(m-1)+j),RD());
          
    for(int i=1;i<n;i++)
      for(int j=1;j<=m;j++)
        if(j==1)addedge(2*((i-1)*(m-1)+j)-1,T,RD());
        else if(j==m)addedge(2*((i-1)*(m-1)+j)-2,0,RD());
        else addedge(2*((i-1)*(m-1)+j)-1,2*((i-1)*(m-1)+j)-2,RD());
          
    for(int i=1;i<n;i++)
      for(int j=1;j<m;j++)
        addedge(2*((i-1)*(m-1)+j)-1,2*((i-1)*(m-1)+j),RD());
           
    spfa();  
    return 0; 

转载于:https://www.cnblogs.com/OcahIBye/p/6805075.html

BZOJ:1001狼抓兔子相关推荐

  1. BZOJ 1001: 狼抓兔子

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec   Memory Limit: 162 MB [ Submit][ Status] Description 现在小 ...

  2. bzoj 1001狼抓兔子

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec   Memory Limit: 162 MB Submit: 15622   Solved: 3771 [ Sub ...

  3. BZOJ 1001 狼抓兔子

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MB Submit: 25653  Solved: 6512 [Submit ...

  4. BZOJ 1001 狼抓兔子(Dijkstra)

    Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一 ...

  5. [BZOJ 1001] 狼抓兔子

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1001 分析 这是道经典的对偶图问题, 平面图最大流问题可以转化为其对偶图的最短路问题. 转化的 ...

  6. 【bzoj题解】1001 狼抓兔子

    题目描述 现在小朋友们最喜欢"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形:   ...

  7. BZOJ 1001 狼捉兔子

    Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个 ...

  8. BZOJ 1001: [BeiJing2006]狼抓兔子【最大流/SPFA+最小割,多解】

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MB Submit: 23822  Solved: 6012 [Submit ...

  9. 1001: [BeiJing2006]狼抓兔子(对偶图)

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MB Submit: 23595  Solved: 5940 Descrip ...

最新文章

  1. eeglab教程系列(12)-使用ICA分解数据
  2. 【详解】Java语言的特点以及Java语言与C/C++的比较
  3. android 多手指触摸屏,AIR Android:关于多点触摸
  4. 手机做服务器性能咋样,服务器性能不足 怎样才能逼出最强状态
  5. 三观要正 心态要好 要快乐
  6. mybatis入门教程(F)
  7. java rsa 128_如何用java实现128位密钥的RSA算法
  8. 【绘图】matlab 绘制窗口分布
  9. spring的新注解
  10. windows 窗口实现隐藏任务栏预览
  11. Android安装软件的后缀,apk是什么文件,后缀是apk是什么文件
  12. QCY T3 蓝牙耳机连接电脑 声音断续卡顿
  13. 推荐书、网站(大多为计算机相关)
  14. win10激活错误,软件授权服务报告无法激活计算机怎么办?
  15. JAVA对接短信通知接口
  16. Acwing活动打卡做题数统计爬虫
  17. python模块,库
  18. xray和burp联动
  19. 男士穿衣 - 博文预览
  20. crtsiii型无砟轨道板_北京雄安城际全线轨道贯通:全程设5座车站,1小时通勤,“刷脸”进站...

热门文章

  1. paas-openshift
  2. AOP拦截+权限验证+返回默认接口对象
  3. Nand_ECC_校验和纠错_详解
  4. Solr(二)创建索引和查询索引的基本应用
  5. python 多线程就这么简单
  6. python代码性能优化技巧
  7. cmake同时生成动态库与静态库的方法
  8. MyBatis 核心对象,工作原理及源码解读
  9. 【iOS开发】使用XCode 8进行真机调试的方法(各种报错信息的解决方法)
  10. c语言程序设计笔记手写图片,C语言程序设计笔记.pdf