題面
很裸的乙個最大權閉合子圖啊。。
如果依賴關係有環,活著說他的依賴關係和環有關,就把這個點廢掉。。
然後你就構圖跑最大權閉合子圖就好了
#include
#include
#include
#include
#include
using
namespace
std;
const
int n=23*33;
const
int max=1
<<30;
struct qt
s[n];
struct qy
ss[n*n];//指向的是他需要誰
int num,last[n];
int n,m;
int p (int x,int y)
void init (int x,int y)
int dfn[n],low[n],belong[n],cnt,sta[n],lalal,shen;
bool in[n];
int tt[n];
int mymin (int x,int y)
void dfs1 (int x)
else
if (in[y]) low[x]=mymin(dfn[y],low[x]);
}if (low[x]==dfn[x])
while (now!=x);
}}qy e[n*n*2];
int last[n];
int st,ed;
void init (int x,int y,int z)
int h[n];
bool bt ()}}
return h[ed]!=-1;
}int dfs (int x,int f)
}if (s1==0) h[x]=-1;
return s1;
}int ok[n];//這個點能不能用
//-1不知道 0不能 1能
void dfs (int x)
}ok[x]=1;
}void solve ()
}while (bt()) ans=ans-dfs(st,max);
printf("%d\n",ans);
}void ins ()
if (i!=m) init(p(u,i),p(u,i+1));
}/*for (int u=1;u<=num;u++)
printf("%d %d\n",ss[u].x,ss[u].y);*/
}int main()
bzoj1565 NOI2009 植物大戰殭屍
傳送門 這道題吃到某個植物a可能需要先吃掉別的植物b 在他的右邊或者保護著他 那麼我們把a連向b。發現這是最大權閉合子圖。顯然是可以通過網路流水過的。閉合子圖 v中頂點的所有出邊均指向v內部頂點 那麼按照最大權閉合圖的建圖方法 1.s向正權點連流量為權值的邊 2.負權點向t連流量為權值的絕對值的邊 ...
BZOJ1565 NOI2009 植物大戰殭屍
好久沒寫部落格了 題目在這裡 沒什麼好說的 應該很容易看出是最大閉合子圖吧?不過要注意一下的是,這題可能有植物是不可能被擊潰的,所以要先跑一遍拓撲排序把這些點排除掉 include include include include include include include include usi...
BZOJ1565 NOI2009 植物大戰殭屍
problem plants vs.zombies pvz 是最近十分風靡的一款小遊戲。plants 植物 和zombies 殭屍 是遊戲的主角,其中plants防守,而zombies進攻。該款遊戲包含多種不同的挑戰系列,比如protect your brain bowling等等。其中最為經典的,...