hdu 3360 最小點覆蓋

2022-06-02 12:27:08 字數 1542 閱讀 4269

題意:給你乙個圖,圖中有寶物和保安兩種元素。每個寶物需要周圍的某些位置同時安放保安(如果那些位置有寶物,可以把寶物替換成保安)問你最少需要再安置多少保安,可以使所有寶物滿足要求。

題意有點難懂

直接建無向圖,少判斷個奇偶性,最後除個2即可

1 #include2 #include3 #include4 #include5 #include6 #include7 #include8

using

namespace

std;

9#define mod 1000000007

10const

int inf=0x3f3f3f3f;11

const

double eps=1e-5

;12 typedef long

long

ll;13

#define cl(a) memset(a,0,sizeof(a))

14#define ts printf("*****\n");

15const

int maxn = 5010;//

點數的最大值

16const

int maxm = 50010;//

邊數的最大值

17int

a[maxn][maxn];

18int

b[maxn][maxn];

19int

n,m,tt;

20/*

21* 匈牙利演算法鄰接表形式

22* 使用前用init()進行初始化,給un賦值

23* 加邊使用函式addedge(u,v)24*

25*/

26struct

edge

27edge[maxm];

30int

head[maxn],tot;

31void

init()

3236

void addedge(int u,int

v)37

41int

linker[maxn];

42bool

used[maxn];

43int

un;44

bool dfs(int

u)4557}

58}59return

false;60

}61inthungary()

6270

return

res;71}

72int dir[2] = ,,,,,

73 ,,,,,,};

74int

main()

7590

for(i=0;i)

9196}97

init();

98for(i=0;i)

99115

}116

}117

}118

}119

}120 printf("

%d. %d\n

",ca++,hungary()/2

);121

}122 }

hdu 1150 最小點覆蓋

題意大致是 有ab兩台機器,a機器有n個模式,b機器有m個模式,k個任務,每個任務可以由ab其中一台機器完成,但需要不同的模式。機器每轉換一次模式就要重啟一次,機器初始時的模式是0,求重啟的最小次數。我們首先將ab的不同模式看作乙個二分圖,對於每乙個任務i,如果它可以由a機器的j模式或者b機器的k模...

hdu1150 最小點覆蓋

題目鏈結machine schedule 有a和b兩個機器,每個機器有不同工作模式,有很多任務,每個任務可以自在a上以mode i執行或者是在b上以mode j執行,每次換mode都要重啟機器 給出k個任務,要求怎麼安排才能讓重啟次數最少 最小點覆蓋 最小覆蓋要求用最少的點 集合或 集合的都行 讓每...

hdu 1150 最小點覆蓋

題目大意 有兩台機器a和b以及n個需要執行的任務。每台機器有m種不同的模式,而每個任務都恰好在一台機器上執行。如果它在機器a上執行,則機器a需要設定為模式xi,如果它在機器b上執行,則機器a需要設定為模式yi。每台機器上的任務可以按照任意順序執行,但是每台機器每轉換一次模式需要重啟一次。請合理為每個...