UOJ 2718 畢業旅行(diworth定理)

2021-09-29 06:41:37 字數 972 閱讀 9670

題意:

思路:dilworth定理:對於乙個偏序集,最少鏈劃分等於最長反鏈長度。

dilworth定理的對偶定理:對於乙個偏序集,其最少反鏈劃分數等於其最長鏈的長度。

最長反鏈=最小路徑覆蓋

floyd傳遞閉包後,用n-二分圖最大匹配數即為答案(因為是點可重最小路徑覆蓋,所以要先用floyd求傳遞閉包)

#include using namespace std;

typedef long long ll;

typedef int lint;

const int inf= 0x3f3f3f3f;

const int maxn = 505;

struct dinic

tot = 1;

}void add( int x,int y,lint z )

bool bfs()}}

return 0;

}lint dfs( int x,lint flow )

}return flow - rest;

}lint max_flow( int x,int y )

} g;

int dist[maxn][maxn];

void floyd(int n)}}

}}int main()

dist[i][i] = 0;

}for( int x,y,i = 1;i <= m;i++ )

floyd(n);

for( int i = 1;i <= n;i++ )

for( int i = 1;i <= n;i++ )

}int ans = n - g.max_flow(s,t);

printf("%d\n",ans);

return 0;

}

畢業旅行問題

這個程式設計題是來自於牛客網的位元組跳動2019春招研發部分程式設計題彙總,有感興趣的朋友們可以去原 檢視。小明目前在做乙份畢業旅行的規劃。打算從北京出發,分別去若干個城市,然後再回到北京,每個城市之間均乘坐高鐵,且每個城市只去一次。由於經費有限,希望能夠通過合理的路線安排盡可能的省一些路上的花銷。...

(TSP)畢業旅行問題

小明目前在做乙份畢業旅行的規劃。打算從北京出發,分別去若干個城市,然後再回到北京,每個城市之間均乘坐高鐵,且每個城市只去一次。由於經費有限,希望能夠通過合理的路線安排盡可能的省一些路上的花銷。給定一組城市和每對城市之間的火車票的價錢,找到每個城市只訪問一次並返回起點的最小車費花銷。輸入描述 城市個數...

程式設計題 畢業旅行問題

時間限制 c c 1秒,其他語言2秒 空間限制 c c 32m,其他語言64m 小明目前在做乙份畢業旅行的規劃。打算從北京出發,分別去若干個城市,然後再回到北京,每個城市之間均乘坐高鐵,且每個城市只去一次。由於經費有限,希望能夠通過合理的路線安排盡可能的省一些路上的花銷。給定一組城市和每對城市之間的...