dinic 模板 待補充

2021-08-09 14:50:09 字數 2192 閱讀 1891

#include using namespace std;

#define mk make_pair

#define pus push_back

#define mo 1005

vector> d[mo];

vector> de[mo];

int tag[mo];

int dfs(int node,int low,int n)}}

// cout<<"asd "<>n>>m)

cout<

時間限制:

10000ms

單點時限:

1000ms

記憶體限制:

256mb

描述學校的秋季運動會即將開始,為了決定參賽人員,各個班又開始忙碌起來。

小hi和小ho作為班上的班幹部,統計分配比賽選手的重任也自然交到了他們手上。

已知小hi和小ho所在的班級一共有n名學生(包含小hi和小ho),編號依次為1..n。

運動會一共有m項不同的比賽,編號為1..m。第i項比賽每個班需要派出m[i]名選手參加。

根據小hi和小ho的統計,編號為i的學生表示最多同時參加a[i]項比賽,並且給出他所擅長的b[i]項比賽的編號。

小hi和小ho希望將每個學生都安排到他所擅長的比賽專案,以增加奪冠的可能性。同時又要考慮滿足每項比賽對人數的要求,當然給乙個學生安排的比賽專案也不能超過他願意參加的比賽專案數量。

根據統計的結果,小hi和小ho想知道能否有乙個合適的安排,同時滿足這些條件。

輸入第1行:1個整數t,表示一共有t(2≤t≤5)組資料,每組資料按如下格式給出:

第1行:2個正整數n,m。1≤n≤100,1≤m≤100。

第2行:m個整數,第i個數表示第i個專案需要的選手數量m[i]。1≤m[i]≤n。

第3..n+2行:若干整數,第i+2行表示編號為i的學生的資訊。先是a[i],b[i],接下來b[i]個整數,表示其所擅長的b[i]個專案。1≤a[i]≤m

輸出第1..t行:第i行表示第i組資料能否滿足要求,若能夠輸出"yes",否則輸出"no"。

樣例輸入

24 31 2 2

1 2 1 2

2 2 1 3

1 1 2

1 2 2 3

4 32 2 2

1 2 1 2

2 2 1 3

1 1 2

1 2 2 3

樣例輸出

yes

no

直接使用dinic一直超時- -  然後畫圖發現  乙個點會重複走很多次 ,加乙個陣列標記之後險過

#include using namespace std;

#define mk make_pair

#define pus push_back

#define mo 205

vector> d[mo];

vector> de[mo];

int pass[mo];

int tag[mo];

int dfs(int node,int low,int n,int sta,int ent)}}

return 0;

}int max_flow(int n,int sta,int ent)

return ans;

}int a,b;

void input(int x,int y,int z)

int main()

sta =n+m+1;

ent =n+m+2;

sum=0;

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

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

return 0;

}int max_flow(int n,int sta,int ent)

return ans;

}int a,b;

void input(int x,int y,int z)

int main()

int sta =n+m+1;

int ent =n+m+2;

int sum=0;

int s,x,y,z;

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

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

return 0;

}int max_flow(int sta,int ent)

cout<

指標 待補充

將位址視為指定的量,將值視為派生量。指標 一種特殊型別的變數 用於儲存值的位址。指標名表示的是位址,運算子被稱為間接值或解除引用運算子,將其應用於指標,可以得到該位址處儲存的值。例,假設manly是乙個指標,manly表示的是乙個位址,manly表示儲存在該位址處的值。宣告和初始化 運算子兩遍的空格...

常用其他(待補充)

echo 輸出乙個或者多個字串 var dump 列印變數的詳細資訊,可以一次列印乙個或多個變數的資訊 print r 列印陣列的資訊 unset 銷毀變數,可以一次銷毀乙個或多個變數,銷毀之後變數的值為null header語句的作用 header content type text html c...

vim操作 待補充

wq 存檔 退出 w 存檔,q 退出 e 開啟新檔案 q 退出 h j k l,分別控制游標左 下 上 右移一格。按ctrl b 螢幕往後移動一頁。常用 按ctrl f 螢幕往前移動一頁。常用 按ctrl u 螢幕往後移動半頁。按ctrl d 螢幕往前移動半頁。按 0 數字零 移動文章的開頭。常用 ...