| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1069 人关注过本帖
标题:请教一下为什会超时(限时 15s)(我用了16秒)(最大流,对偶图)
取消只看楼主 加入收藏
xuzc
Rank: 1
等 级:新手上路
帖 子:15
专家分:9
注 册:2016-9-13
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
请教一下为什会超时(限时 15s)(我用了16秒)(最大流,对偶图)
//题目链接   http://www.
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int cnt,i,j,x,xx,xxx,h,t,s,hh[7010000],n,m,w;
bool dd[2010000];
int e,l[2010000],d[2010000];
struct node{
 int v,next,z;
}b[6510000];
inline void add(int aa,int bb,int cc)
{
 b[++cnt].v=bb;
 b[cnt].next=hh[aa];
 b[cnt].z=cc;
 hh[aa]=cnt;
 b[++cnt].v=aa;
 b[cnt].next=hh[bb];
 b[cnt].z=cc;
 hh[bb]=cnt;
}
void add1()
{
 for(i=1;i<m;++i)
 {
  scanf("%d",&x);
  add(i*2,t,x);
  }
 for(i=2;i<n;++i)
 {
  for(j=1;j<m;++j)
  {
   scanf("%d",&x);
   add((i-1)*(m-1)*2+j*2,(i-1)*(m-1)*2+j*2-m*2+1,x);
  }
 }
 for(j=1;j<m;++j)
 {
  scanf("%d",&x);
  add(s,(n-2)*2*(m-1)+j*2-1,x);
 }   
}
void add2()
{
 for(i=1;i<n;++i)
 {
  scanf("%d",&x);xx=(i-1)*(m-1)*2+1;
  add(s,xx,x);
  for(j=2;j<m;++j)
  {
      scanf("%d",&x);xx+=2;
      add(xx-1,xx,x);
   }
  scanf("%d",&x);
  add(xx+1,t,x);
 }   
}
inline void add3()
{
 
 for(i=1;i<n;++i)
 {
  for(j=1;j<m;++j)
  {
   scanf("%d",&x);
   add((i-1)*(m-1)*2+j*2,(i-1)*(m-1)*2+j*2-1,x);
  }
 }   
}
void spfa()
{
 dd[s]=true;
 h=0;w=0;
 memset(l,0x3f,sizeof(l));
 l[s]=0;
 while(1)
 {
  if(h>w)break;
  for(i=hh[s];i;i=b[i].next)
  {
   e=b[i].v;
   if(l[s]+b[i].z<l[e]){
       l[e]=l[s]+b[i].z;
       if(!dd[e])d[++w]=e,dd[e]=true;
   }   
  }
  dd[s]=false;
  s=d[++h];
 }
}
int main()
{
 scanf("%d %d",&n,&m);
 if(n==m&&n==1){
  printf("0");
  return 0;
 }
 s=0;
 t=2*(n-1)*(m-1)+1;
 add1();
 add2();
 add3();
 spfa();
 printf("%d",l[t]);
 return 0;
}
搜索更多相关主题的帖子: include 
2016-09-17 19:29
xuzc
Rank: 1
等 级:新手上路
帖 子:15
专家分:9
注 册:2016-9-13
收藏
得分:0 
求讲解一下在哪超时,缩短时间该怎么写,O(∩_∩)O谢谢
2016-09-17 19:32
xuzc
Rank: 1
等 级:新手上路
帖 子:15
专家分:9
注 册:2016-9-13
收藏
得分:0 
回复 3楼 ehszt
不影响啊
2016-09-19 21:56
xuzc
Rank: 1
等 级:新手上路
帖 子:15
专家分:9
注 册:2016-9-13
收藏
得分:0 
回复 5楼 书生牛犊
我跟另一个人代码差不多,但是人家只用了三秒多,我想知道在哪多了十几秒
http://
2016-09-19 21:59
快速回复:请教一下为什会超时(限时 15s)(我用了16秒)(最大流,对偶图)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024800 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved