为什么狼和羊的故事建的边是双向边,方格取数问题建的是单向边(不是指反向边)。 狼和羊的故事
for(int i=1;i<=n;++i) {
for(int j=1;j<=m;++j) {
scanf("%d",&col[i][j]);
if(col[i][j]==1) adline(S,(i-1)*m+j,inf);
else if(col[i][j]==2) adline((i-1)*m+j,T,inf);
if(col[i][j]!=2)
for(int q=0;q<4;++q) {
int xx=i+dx[q];
int yy=j+dy[q];
if(xx<1||yy<1||xx>n||yy>m||col[xx][yy]==1) continue;
adline((i-1)*m+j,(xx-1)*m+yy,1);
}
}
}
方格取数
for(int j=1;j<=m;++j) {
scanf("%d",&a[i][j]);
sum+=a[i][j];
if((i+j)%2==0) {
adline(S,num(i,j),a[i][j]);
for(int q=0;q<4;++q) {
int xx=i+dx[q];
int yy=j+dy[q];
if(xx<1||yy<1||xx>n||yy>m) continue;
adline(num(i,j),num(xx,yy),inf);
}
}
else {
adline(num(i,j),T,a[i][j]);
}
}