網路流24題 試題庫問題 luogu 2763

2022-05-25 17:36:13 字數 1167 閱讀 1460

題目描述看:這裡

這是我們遇到的第乙個要求輸出方案的問題

考慮建圖然後用最大流思想:

首先由源點向每一道試題連邊,容量為1

然後由每一種試題型別向匯點連邊,容量為需求量

最後由每一道試題向可能屬於的試題型別連邊,容量為1

然後跑最大流,如果流量等於總需求量的話即證明合法(每一條到匯點的邊流量都跑滿才能使流量等於總需求量,這時一定是合法的)

接下來考慮在合法時如何輸出方案

根據網路流的特徵,我們可以發現如果某一道試題被歸入了某乙個型別,那麼這道試題到這個型別的邊就會跑上1的流量

而如果正向邊跑上了1的流量,正向邊的容量即變為0,而反向邊的容量即成為1

所以我們僅需檢驗正向邊容量為0/反向邊容量為1任意乙個條件,即可說明這道試題歸屬到了這個試題型別中

考慮到是按試題型別輸出選擇的試題編號,所以我們檢驗反向邊更加簡單一些

#include #include #include #include #include #include #include #include using namespace std;

const int inf=0x3f3f3f3f;

struct edge

edge[40005];

int head[1505];

int dis[1505];

int cur[1505];

int k,n;

int cnt=1;

int st,ed;

void init()

void add(int l,int r,int w)

bool bfs()

}return dis[ed];

}int ide(int x)

int dfs(int x,int lim)

}cur[x]=i;

}return ret;

}int dinic()

int main()

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

add(st,i,1);

add(i,st,0);

}int t=dinic();

if(t!=s)printf("no solution!\n");

else

printf("\n");}}

return 0;

}

網路流24題 試題庫問題

網路流24題大多需要spj,所以需要乙個有spj的oj,本系列 均在www.oj.swust.edu.cn測試通過 這道題的模型很顯然,源點向每個試卷連線一條容量為1的邊,每個試卷向對應的型別連線一條容量為一的邊,每個型別向匯點連線一條容量為需要數量的邊,跑一邊最大流即可。include inclu...

網路流24題 試題庫問題

傳送門 這個題好像比較水。每個種類向匯點連容量為所需求的數量的邊 然後每個試題向可以選的種類連容量為1的邊 再從源點向每個試題連容量為1的邊,然後dinic 過程中記錄一下轉移的目標節點,然後輸出路徑就好了 判無解不用我說了吧。include include include include incl...

網路流24題 試題庫問題

有 k k 種型別和 n role presentation n n個題目,每個題目會適應部分型別,一種型別可能需要多種題,一道題可能多種型別都需要,但一道題只能滿足一種型別,現要求出滿足出完所有型別的題目的方案 網路流擅長於解決各種有要求的匹配,顯然這道題是有條件的匹配,可以用最大流來解決。首先建...