zoukankan      html  css  js  c++  java
  • Codeforces 269C Flawed Flow (看题解)

    我好菜啊啊啊。。

    循环以下操作

    1.从队列中取出一个顶点, 把哪些没有用过的边全部用当前方向。

    2.看有没有点的入度和 == 出度和, 如果有将当前的点加入队列。

    现在有一个问题就是, 有没有可能队列中为空还没有更新完毕, 这是不可能的, 

    我们能这么考虑, 其中一个点x的入度还没有满, 那么我们能推出(u, x)还没有被确认, 说明u还没入队, 

    因为原图为有向图, 所以最后一定会推到1, 这回产生矛盾, 所以这种情况不可能发生。

    #include<bits/stdc++.h>
    #define LL long long
    #define fi first
    #define se second
    #define mk make_pair
    #define PLL pair<LL, LL>
    #define PLI pair<LL, int>
    #define PII pair<int, int>
    #define SZ(x) ((int)x.size())
    #define ull unsigned long long
    
    using namespace std;
    
    const int N = 2e5 + 7;
    const int inf = 0x3f3f3f3f;
    const LL INF = 0x3f3f3f3f3f3f3f3f;
    const int mod = 1e9 + 7;
    const double eps = 1e-8;
    const double PI = acos(-1);
    
    int n, m, ans[N], all[N], sum[N];
    vector<pair<PII,int>> G[N];
    
    int main() {
        memset(ans, -1, sizeof(ans));
        scanf("%d%d", &n, &m);
        for(int i = 1; i <= m; i++) {
            int a, b, c;
            scanf("%d%d%d", &a, &b, &c);
            G[a].push_back(mk(mk(b, c), i));
            G[b].push_back(mk(mk(a, c), -i));
            all[a] += c;
            all[b] += c;
        }
        queue<int> que;
        que.push(1);
        while(!que.empty()) {
            int u = que.front(); que.pop();
            for(auto& e : G[u]) {
                if(~ans[abs(e.se)]) continue;
                if(e.se < 0) {
                    ans[-e.se] = 1;
                    sum[e.fi.fi] += e.fi.se;
                } else {
                    ans[e.se] = 0;
                    sum[e.fi.fi] += e.fi.se;
                }
                if(sum[e.fi.fi] * 2 == all[e.fi.fi])
                    if(e.fi.fi != n) que.push(e.fi.fi);
            }
        }
        for(int i = 1; i <= m; i++) printf("%d
    ", ans[i]);
        return 0;
    }
    
    /*
    */
  • 相关阅读:
    Hadoop(1.2.1)安装
    ETL,BPM与ESB三者的一些感悟
    编程上面的理论支撑
    TreeSet类的排序
    List接口
    Map接口
    类和对象
    面向对象1
    IO流4
    Java面向对象
  • 原文地址:https://www.cnblogs.com/CJLHY/p/10445358.html
Copyright © 2011-2022 走看看