郑焕鑫 点割集文档格式.docx
- 文档编号:16378745
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:13
- 大小:16.20KB
郑焕鑫 点割集文档格式.docx
《郑焕鑫 点割集文档格式.docx》由会员分享,可在线阅读,更多相关《郑焕鑫 点割集文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
iostream>
vector>
usingnamespacestd;
constlongmaxn=400;
constlongmaxm=160002;
constlonginf=0x7fffffff;
intg[maxn][maxn],cut[maxn];
structnode{
longv,next;
longval;
}s[maxm*2];
longlevel[maxn],p[maxn],que[maxn],out[maxn],ind;
inlinevoidinsert(longx,longy,longz)
{
s[ind].v=y;
s[ind].val=z;
s[ind].next=p[x];
p[x]=ind;
ind++;
s[ind].v=x;
s[ind].val=0;
s[ind].next=p[y];
p[y]=ind;
voidbuild_level(intn,intsource)
inth=0,r=0,i,u;
for(i=0;
i<
i++)level[i]=0;
level[source]=1;
que[0]=source;
while(h<
=r)
u=que[h++];
for(i=p[u];
i!
=-1;
i=s[i].next)
{
if(s[i].val&
&
level[s[i].v]==0)
que[++r]=s[i].v;
level[s[i].v]=level[u]+1;
}
}
longdinic(longn,longsource,longsink)
longret=0,i;
while
(1)
build_level(n,source);
if(level[sink]==0)break;
++i)out[i]=p[i];
//有一次写错了'
='
,结果tle,调试了好久
longq=-1;
if(q<
0)//空栈中,压入source(如果source的临接边没有满流)
for(i=out[source];
i!
{
out[s[i].v]!
=-1&
level[s[i].v]==2)
{
break;
}
}
if(i!
=-1)
que[++q]=i;
out[source]=s[i].next;
elsebreak;
longu=s[que[q]].v;
if(u==sink)
longdd=inf;
=q;
if(dd>
s[que[i]].val)
dd=s[que[i]].val;
ret+=dd;
s[que[i]].val-=dd;
s[que[i]^1].val+=dd;
i++)//堵塞点
if(s[que[i]].val==0)
q=i-1;
break;
else
for(i=out[u];
level[u]+1==level[s[i].v])
out[u]=s[i].next;
else//当前点没有临接的可行流
out[u]=-1;
q--;
returnret;
voidbuild(intn)
inti,j;
ind=0;
memset(p,-1,sizeof(p));
intmain()
intm,n,x,y,start,end;
//freopen("
a.txt"
"
r"
stdin);
while(scanf("
%d%d%d"
&
n,&
start,&
end)!
=EOF)
j++)scanf("
%d"
g[i][j]);
g[i][i]=0;
if(g[start][end]==1)
printf("
NOANSWER!
\n"
);
continue;
memset(cut,0,sizeof(cut));
build(n);
intmaxflow=dinic(n*2,start,end+n);
vector<
int>
v;
if(maxflow==0)printf("
0\n"
%d\n"
maxflow);
if(i==start||i==end)continue;
cut[i]=1;
intres=dinic(2*n,start,end+n);
if(res<
maxflow)
v.push_back(i);
maxflow=res;
elsecut[i]=0;
if(res==0)break;
v.size()-1;
i++)printf("
%d"
v[i]);
return0;
hdu
2485
最短路构图,然后求最小点割集
string.h>
stdio.h>
#definemaxm1140080
#definemaxn200
constlonginf=0x3fffffff;
intf[maxn][maxn],map[maxn][maxn];
boolmark[maxn];
longmin(intx,inty){returnx>
y?
y:
x;
voidfloyd(intn)
inti,j,k;
for(k=1;
k<
k++)
i++)
j<
j++)
if(i==j||i==k||j==k)continue;
f[i][j]=min(f[i][j],f[i][k]+f[k][j]);
inti,j;
memset(p,-1,sizeof(p));
ind=0;
for(i=1;
i<
=n;
if(mark[i])
insert(n+i,i,1);
for(j=1;
j<
j++)
if(map[i][j]&
mark[j])insert(i,n+j,inf);
intmaxflow,end,start,n,m,x,y;
inti,k,j;
m,&
k))
if(n==0&
m==0&
k==0)break;
start=1;
end=n;
memset(map,0,sizeof(map));
memset(mark,0,sizeof(mark));
f[i][j]=inf;
m;
scanf("
%d%d"
x,&
y);
map[x][y]=1;
f[x][y]=1;
if(map[1][n])
i++)map[i][i]=0;
floyd(n);
mark[1]=mark[n]=1;
for(i=2;
n;
if(f[1][i]+f[i][n]<
=k)
mark[i]=1;
maxflow=dinic(n*2,start,end+n);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 郑焕鑫 点割集