题意:给出一些边,给出边的容量。让你为所有边确定一个方向使得流量最大。

题目不用求最大流, 而是求每条边的流向,这题是考察网络流的基本规律。

若某图有最大,则有与源点相连的边必然都是流出的,与汇点相连的边必然是流入的,其它所有点流入和流出的流量是相等的。

我们可以根据这一规律来求解。

先求出所有点(除了源点和汇点)的总流量(表示流入的流量的2倍),每次流过该边,更新的时候减去流入流量的2倍。

从源点出发广搜每个点,搜的过程可以确定经过边的流向,当某个点的剩余总流量为0时,表示流入该点的流量边已经都处理完毕,将这点入栈。

特别注意:当 这个点是汇点时不要入栈, 不然会从汇点回流过来,不符合基本规律。

#include<bits/stdc++.h>
using namespace std;
const int MAXN = ;
const int MAXM = MAXN * ;
struct Edge {
int u,v,w;
int next;
int type,id;
}edge[MAXM];
int head[MAXN],tot; void init() {tot = ; memset(head,-,sizeof(head));}
void add_edge(int u,int v,int w,int type,int id) {
edge[tot].u = u;
edge[tot].v = v;
edge[tot].w = w;
edge[tot].type = type;
edge[tot].id = id;
edge[tot].next = head[u];
head[u] = tot++;
} queue<int>q;
int N,M;
bool vis[MAXN];
int ans[MAXN],val[MAXN]; int main() {
while (scanf("%d%d",&N,&M) != EOF) {
init();
memset(val,,sizeof(val));
for (int i = ; i < M ; i++) {
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
add_edge(u,v,w,,i + );
add_edge(v,u,w,,i + );
val[u] += w;
val[v] += w;
}
while (!q.empty()) q.pop();
vis[] = true; q.push();
while (!q.empty()) {
int u = q.front(); q.pop();
for (int i = head[u] ; i != - ; i = edge[i].next) {
int v = edge[i].v;
if (vis[v]) continue;
val[v] -= * edge[i].w;
ans[edge[i].id] = edge[i].type;
if (val[v] == && v != N) {
vis[v] = true;
q.push(v);
}
}
}
for (int i = ; i <= M ; i++) printf("%d\n",ans[i]);
}
return ;
}

最新文章

  1. BestCoder Round #89 B题---Fxx and game(单调队列)
  2. TCP学习之三:客户端、服务端同步传输字符串
  3. 【OS】实模式和保护模式区别及寻址方式
  4. 最锋利的Visual Studio Web开发工具扩展:Web Essentials详解(转)
  5. 在android.app.Application中定义全局变量
  6. canvas基础2--绘制图形
  7. hdu 5719 BestCoder 2nd Anniversary B Arrange 简单计数问题
  8. Windows下Subversion和Apache的安装及配置(一)
  9. FatMouse
  10. 实时数据处理环境搭建flume+kafka+storm:3.kafka安装
  11. PHP&amp;nbsp;支持的协议/封装协议列表
  12. iOS相机去黑框
  13. MySQL 5.7中 performance_schema 替代 show profile 命令
  14. java 如何判断操作系统是Linux还是Windows
  15. JAVA中使用log4j及slf4j进行日志输出的方法详解
  16. 使用Nginx反向代理绕过域名备案详解
  17. Python全栈之路----常用模块学习----模块的种类和导入方法
  18. socketserver实现FTP
  19. HTTP协议冷知识大全
  20. Yii框架的原代码

热门文章

  1. SQL - SELECT COUNT用法
  2. 如何在指定文件夹下进入jupyter notebook
  3. CUDA9.0+tensorflow-gpu1.8.0+Python2.7服务器环境搭建经验
  4. python基础之获取版本信息
  5. 【iOS开发】iOS CGRectGetMaxX/Y 使用
  6. Spring Boot学习(一):入门篇
  7. SQL 视图 局部变量 全局变量 条件语句 事务 触发器
  8. 安装elasticsearch-1.7.1及中文IK和近义词配置
  9. [洛谷P4291][HAOI2008]排名系统
  10. [学习笔记]对未来做出承诺的DP小结