P3119 [USACO15JAN]草鑑定Grass Cownoisseur 縮點 topo或最長路

題意:n個點 m條有向邊,能夠來回走一個點,問在能夠逆行一次的狀況下最多有能通過多少個不一樣的點。c++ 解: 先縮點去環建新圖,新圖建正序(表示以1爲起點到達的點)和逆序(以1爲終點到達的點) ,而後最長路求出從1到每一個點通過不一樣點的最大數目 正向.f[i]和反向.f[i] ,最後枚舉每一條邊,計算ans和當前邊兩點最大值。 輸出 ans - sum[belong[1]] ,由於這個重複了。
相關文章
相關標籤/搜索