POJ-2135 自己构图WA了..参考了别人的构图..

原创 2012年03月24日 20:13:51

     看到这题我想到的是以前USACO做的一道构图求最小割的~~构图构得蛮Happy~~猛然发现是无向图..就各种坑爹纠结了...最后跑出样例~~提交还是WA了...呃~~

     参考了别人的构图...学习学习..

     "基础最小费用最大流。加一个源点S和一个汇点T,源点S与点1连一条容量为2费用为0点边,点n与汇点T也连一条容量为2费用为0的边,对于题目给定的那些边。每条边的容量为1,费用为每条边花费的时间。注意这是双向边。然后求最小费用。"---From http://blog.sina.com.cn/s/blog_71fda4350100w9tr.html

      Discuss里有人说跑两次SPFA..其实本题用最小费用最大流的方法就是跑了两次SPFA...本质上是一样的...

      解网络流几种形式的方法是基本固定的..像这道题..最后重新构图时,除了main函数里的一些关于构图的代码...其他一点没改..一下子就改好了...所以.网络流的根本还是巧妙的构图...

  

Program:

#include<iostream>
#include<string.h>
#include<stdio.h>
#include<queue>
#define oo 2000000000
using namespace std;
struct node1
{
      int x,y,c,w,next;
}line[50005];
struct node2
{
      int w,pre,l;
}dp[3005];
int n,m,_link[3005],ans;
bool inqueue[3005];
queue<int> myqueue;
bool SPFA()
{
      int i,h,k;
      memset(dp,-1,sizeof(dp));
      memset(inqueue,false,sizeof(inqueue));
      while (!myqueue.empty()) myqueue.pop();
      myqueue.push(0);
      dp[0].pre=dp[0].w=0;
      while (!myqueue.empty())
      {
             h=myqueue.front();
             myqueue.pop();
             inqueue[h]=false;
             k=_link[h];
             while (k)
             {
                   if (line[k].c && (dp[line[k].y].w>dp[h].w+line[k].w || dp[line[k].y].pre==-1))
                   {
                          dp[line[k].y].w=dp[h].w+line[k].w;
                          dp[line[k].y].pre=h; dp[line[k].y].l=k;
                          if (!inqueue[line[k].y])
                          {
                                myqueue.push(line[k].y);
                                inqueue[line[k].y]=true;
                          }
                   }
                   k=line[k].next;
             }
      }
      if (dp[n].pre==-1) return false;
      return true;
}
void MinCostOfMaxFlow()
{
      int i;
      ans=0;
      while (SPFA())
      { 
            i=n;
            while (i)
            {
                  line[dp[i].l].c-=1;  
                  ans+=line[dp[i].l].w;
                  m++;
                  line[m].x=line[dp[i].l].y;
                  line[m].y=line[dp[i].l].x;
                  line[m].w=-line[dp[i].l].w;
                  line[m].c=1;  
                  line[m].next=_link[line[m].x];
                  _link[line[m].x]=m;
                  i=dp[i].pre; 
            } 
      }
      return;
}
int main()
{
      int p,x,y,w;
      memset(_link,0,sizeof(_link));
      scanf("%d%d",&n,&p);
      m=0;
      while (p--)
      {
            m++;
            scanf("%d%d%d",&x,&y,&w);
            line[m].c=1; line[m].w=w;
            line[m].x=x; line[m].y=y;
            line[m].next=_link[line[m].x];
            _link[line[m].x]=m;
            m++;
            line[m].c=1;  line[m].w=w;
            line[m].x=y; line[m].y=x;
            line[m].next=_link[line[m].x];
            _link[line[m].x]=m; 
      } 
      n++;
      m++;
      line[m].x=0; line[m].y=1; 
      line[m].c=2; line[m].w=0;
      line[m].next=_link[line[m].x];
      _link[line[m].x]=m; 
      m++;
      line[m].x=n-1; line[m].y=n;
      line[m].c=2; line[m].w=0;
      line[m].next=_link[line[m].x];
      _link[line[m].x]=m; 
      MinCostOfMaxFlow();
      printf("%d\n",ans);
      return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

摄影构图的几种基本方法

转自:http://bbs.dzwww.com/thread-25926328-1-1.html 对于摄影,构图是基本的技巧之一。同样的事物,不同的角度就有不同的构图,不同的构图就是不同的视角,视角不...
  • scliu12345
  • scliu12345
  • 2016年01月23日 20:02
  • 2329

黄金分割与构图

黄金分割与构图
  • qwertyupoiuytr
  • qwertyupoiuytr
  • 2017年01月04日 00:12
  • 872

效果图的原则和技巧,效果图构图的构图原则和技巧

1 效果图的原则和技巧 1.1 效果图和建筑摄影间的关系 可以这么说,效果图是虚拟化的建筑摄影,逼真的效果图和传统摄影作品在艺术法则上是一脉相承的 只不过摄影是现...
  • Rodulf
  • Rodulf
  • 2017年10月10日 11:25
  • 369

基于SLAM融合构图的自主轮式仓储货运机器人技术说明

本文为基于SLAM融合构图的自主轮式仓储货运机器人技术说明文档,旨在说明基于SLAM融合构图的自主轮式仓储货运机器人环境依赖与操作配置。...
  • qq_33521754
  • qq_33521754
  • 2018年01月02日 00:16
  • 78

Technical Artist的不归路 —— 游戏场景的构图概念

这篇博客介绍了游戏场景中的构图的概念以及在场景构图时应该注意的点。
  • noahzuo
  • noahzuo
  • 2016年06月07日 18:14
  • 1027

游戏原画场景构图透视设计教程

游戏原画场景构图透视设计教程
  • QQ1005150359
  • QQ1005150359
  • 2017年11月06日 16:11
  • 152

三种常用构图方式

这篇博客讲的不是按像素计算的图片或者摄影摄像的构图,而是节点与节点之间有边、边上有权值的图,如何把这样的一张图存入计算机中。这里将介绍三种较为常用的构图方式:邻接矩阵、vector 数组和链式前向星构...
  • CSDNjiangshan
  • CSDNjiangshan
  • 2017年07月20日 12:01
  • 267

教你如何把控版式第一季(排版、构图细解)

  • ysydao
  • ysydao
  • 2013年05月06日 10:10
  • 1219

图论----同构图

图论当中的术语,假设G=(V,E)和G1=(V1,E1)是两个图,如果存在一个双射m:V→V1,使得对所有的x,y∈V均有xy∈E等价于m(x)m(y)∈E1,则称G和G1是同构的,这样的一个映射m称...
  • hy1405430407
  • hy1405430407
  • 2015年08月18日 10:38
  • 4957

LS文法构图算法(1) 简介

        文法构图算法是仿照语言学中的语法生成方法来构造图形的一种算法。        任何语言都是由一个字母集和一些构成有意义语句的文法规则组成的。        著名语言学家N.Chomsk...
  • fyzhao
  • fyzhao
  • 2007年01月17日 14:02
  • 3291
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ-2135 自己构图WA了..参考了别人的构图..
举报原因:
原因补充:

(最多只允许输入30个字)