poj 3216 最小路徑覆蓋

2021-09-08 16:58:16 字數 774 閱讀 5519

題意:有n個地方,m個任務,每個任務給出地點,開始的時間和完成需要的時間,問最少派多少工人去可以完成所有的任務。給出任意兩點直接到達需要的時間,-1代表不能到達。

思路:很明顯的最小路徑覆蓋問題,剛開始腦子抽了,沒求最短路直接就做了,題目只給了兩點間直接到達的時間,還可以間接到達,用floyd求出最短路。。。

#include#includeconst int n=300;

const int inf=0x3fffffff;

int head[n],num,match[n],link[n],map[30][30],n,m;

struct edge

e[n*n];

struct node

p[n];

void addedge(int x,int y)

int find(int u)//二分匹配

} }return 0;

}void floyd()//最短路

int main()

for(i=1;i<=m;i++)

floyd();

memset(head,-1,sizeof(head));

num=0;

for(i=1;i<=m;i++)

}memset(match,-1,sizeof(match));

int sum=0;

for(i=1;i<=m;i++)

printf("%d\n",m-sum);

} return 0;

}

POJ3216 最小路徑覆蓋

首先說一下題意,q個區域,m個任務,每個區域任務可能有多個,然後給你個到各地所需時間的矩陣,每個任務都有開始和持續時間,問最少需要多少工人?每個工人只能同時執行乙個任務。通過題意,我的瞬間反應就是先把點拆開再說,因為每個區域可能有多個任務,所以把每個任務都當做一點處理,之後就需要考慮一件事情,乙個工...

最小路徑覆蓋問題(最小路徑覆蓋)

本題題目描述可以發現很明顯的最小路徑覆蓋問題,又因為最小路徑覆蓋 節點數 二分圖最大匹配數,所以本題可以用匈牙利演算法求出二分圖最大匹配數,也可以向第一題那樣用網路流模型求出最大匹配數。本題建模時不同在於,每個點要分成兩個點,乙個為起點,乙個為終點,再來求二分圖最大匹配。然後麻煩就在於本題也要輸出路...

poj2060 最小路徑覆蓋

題意 有n個任務 開始時間 起始地點 終止地點。每個地點可以派出一輛計程車,如果計程車完成任務i後還可以到達任務j,那麼它可以繼續執行任務j。現在問最少可以排除多少輛計程車?演算法 1 最小路徑覆蓋 2 在無圈有向圖中 最小路徑覆蓋 最大匹配數 3 建圖 如果任務i和任務j可以由一輛計程車共同執行,...