poj1273
2013-11-19 23:16
120 查看
这是一道网络流模板题,我却10次没有A掉,其中包括2个MLE,3个RE,2个CE。今天真的不适宜敲代码。
说点感想:好累!今天晚上本是集训的时间,又是回宿舍了,洗了洗衣服。白天写了两篇论文,说是论文,也就是受力分析了一下,列了个微分方程,做了个拉普拉斯变换,用simulink仿真了一下,用Matlab画了画频响图和波特图,分析了下曲线。没什么创新性可言,这种论文肯定发出去没人要,有人要也是这个杂志社缺稿子了。。另外一篇是帮啸爷找了找资料,让他在比赛前先别让这些事情烦心。明天又是满满一天的课,很难熬。电路十四周考试,还两周,恐怕这两周又没法安下心来敲代码了,原谅我。
鼓励自己的话:要想比别人好,就得比别人努力的多。
说多了,这个题目的代码主体部分是抄的别人的,mark一下,现在安不下心来学这个算法,过了也不是自己的东西,又有何用?!
美其名曰借鉴,实则抄袭,这样怎么能做好?!
请看到这篇文章的读者自行搜索解题报告吧,这里提供一下抄袭的代码:
说点感想:好累!今天晚上本是集训的时间,又是回宿舍了,洗了洗衣服。白天写了两篇论文,说是论文,也就是受力分析了一下,列了个微分方程,做了个拉普拉斯变换,用simulink仿真了一下,用Matlab画了画频响图和波特图,分析了下曲线。没什么创新性可言,这种论文肯定发出去没人要,有人要也是这个杂志社缺稿子了。。另外一篇是帮啸爷找了找资料,让他在比赛前先别让这些事情烦心。明天又是满满一天的课,很难熬。电路十四周考试,还两周,恐怕这两周又没法安下心来敲代码了,原谅我。
鼓励自己的话:要想比别人好,就得比别人努力的多。
说多了,这个题目的代码主体部分是抄的别人的,mark一下,现在安不下心来学这个算法,过了也不是自己的东西,又有何用?!
美其名曰借鉴,实则抄袭,这样怎么能做好?!
请看到这篇文章的读者自行搜索解题报告吧,这里提供一下抄袭的代码:
#include <iostream> #include <queue> #include <vector> #include <string.h> #define MAXN 205 #define oo 0x3f3f3f3f using namespace std; struct edge { int to, cap, rev; }; vector <edge> G[MAXN]; int level[MAXN];//顶点到源点的距离编号 int iter[MAXN];//当前弧,在其之前的边不用再考虑 void add_edge(int from, int to, int cap) { edge from_edge, to_edge; from_edge = { to, cap, G[to].size() }; to_edge = { from, 0, G[from].size() - 1 }; G[from].push_back(from_edge); G[to].push_back(to_edge); } //bfs用来计算从源点出发所有点的距离编号 void bfs(int s) { memset(level, -1, sizeof(level)); queue<int> que; level[s] = 0; que.push(s); while (!que.empty()) { int v = que.front(); que.pop(); for (int i = 0; i < G[v].size(); i++) { edge &e = G[v][i]; if (e.cap > 0 && level[e.to] < 0) { level[e.to] = level[v] + 1; que.push(e.to); } } } } //通过DFS寻找当前的最短的增广路 int dfs(int v, int t, int f) { if (v == t) return f; for (int &i = iter[v]; i < G[v].size(); i++) {//这里用引用,巧妙地修改了iter数组 edge &e = G[v][i]; if (e.cap > 0 && level[v] < level[e.to]) {//level[v] < level[e.to]这个条件保证了当前的增广路是最短的 int d = dfs(e.to, t, min(f, e.cap)); if (d > 0) { e.cap -= d; G[e.to][e.rev].cap += d; return d; } } } return 0; } int max_flow(int s, int t) { int flow = 0; for (;;) { bfs(s); if (level[t] < 0) return flow; memset(iter, 0, sizeof(iter)); int f; while ((f = dfs(s, t, oo)) > 0) { flow += f; } } } void init() { for(int i = 0; i < MAXN; i++) { G[i].clear(); } } int main() { int n, m; while (cin >> n >> m) { init(); for (int i = 0; i < n; i++) { int a, b, c; cin >> a >> b >> c; add_edge(a, b, c); } cout << max_flow(1, m) << endl; } } |
相关文章推荐
- POJ 1273:Drainage Ditches 网络流模板题
- POJ 1273 Drainage Ditches
- poj 1273 Drainage Ditches 最大流
- poj 1273 EK 最大流
- POJ 1273 Drainage Ditches dinic 最大流
- poj 1273 Drainage Ditches(网络流)
- POJ 1273 Drainage Ditches(最大流)
- 【POJ 1273 Drainage Ditches】& 网络流 & Dinic 算法
- poj1273 Drainage Ditches (最大流模板)
- poj1273
- POJ - 1273 Drainage Ditches 最大流 模板题
- POJ 1273 Drainage Ditches【最大流EK算法模板题】
- POJ 1273 Drainage Ditches 网络流 模板题
- http://poj.org/problem?id=1273
- poj 1273 Drainage Ditches【最大流入门】
- POJ - 1273 Drainage Ditche
- 最大流入门POJ 1273 Edmonds-Karp
- poj 1273 Drainage Ditches 网络流 Edmond Karp || Dinic
- POJ 1273
- POJ 1273 网络流基础题