Problem:
题目都直接说求最大流了,还需要做什么
数据这么弱,直接套最大流模版
#include#include #include #include using namespace std;#define MAXN 16int map[MAXN][MAXN],n,m,ans,pre[MAXN];//map[][]邻接矩阵存图,pre[]前驱数组 bool EK_BFS(int start,int end){ //宽搜寻增广路 queue que; bool flag[MAXN];//标记点是否被选入队列 memset(flag,false,sizeof(flag)); memset(pre,-1,sizeof(pre));//初始化前驱数组 que.push(start); flag[start]=true; while(!que.empty()){ int e=que.front(); if(e==end)return true;//当队头弹出的点为终点时 表示寻到增广路 que.pop(); for(int i=1;i<=n;i++){ if(map[e][i] && !flag[i]){ flag[i]=true; pre[i]=e; que.push(i); } } } return false;}void work(){ //EK_max_flow ans=0;//初始化最大流 while(EK_BFS(1,n)){ int Minf=1010; int u=n; while(pre[u]!=-1){ Minf=min(Minf,map[pre[u]][u]);//寻找瓶颈边 u=pre[u]; } ans+=Minf; u=n; while(pre[u]!=-1){ //修改路径上的边流量 map[pre[u]][u]-=Minf; map[u][pre[u]]+=Minf; u=pre[u]; } }}void init(){ scanf("%d%d",&n,&m); memset(map,0,sizeof(map)); int x,y,c; for(int i=0;i
相关知识传送门:
还不够...百度谷歌告诉你
图论网络流什么的,太赞了.....真的很好玩(很好玩的哟,你也要来玩吗?)