青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

【這次市選我掛得很慘……前3題全部爆0(騙分都米騙到)……就這種爛成績還能進市隊,可見合肥人之沙茶……】
最不該掛的是第一題。第一問就是個裸的最大閉合子圖,關鍵就出在第二問上,要求最大閉合子圖的最小容量。本沙茶后來才發(fā)現(xiàn)這竟然是PKU原題?。≒KU2987),因為,最大流求出來的最大閉合子圖一定是容量最小的!故第二問只要在求出最大流后來一次遍歷,找到S可達的結點個數即可。

詳細證明(轉網上某神犇的):
———————————————————————————————————————————————————最大權不可能是負數,當是0的情況,自然是一個點不選最優(yōu),下面探討忽略0的情況。

         1:首先我假設有兩個閉合子圖都擁有相同的最大權,并且沒有共同點,很容易證明不會出現(xiàn)這種情況,因為如果我們把兩個閉合子圖都選擇上,那么最大權會變大。

         2:仍然假設有兩個閉合子圖都擁有相同的最大權,但是有共同點,即重疊的意思。根據閉合圖的特點,這些共同點不是隨意的,可以知道,只要有一個點相同,那么這個點的能到達的所有后續(xù)點都必定是共同點。所以會得出一個結論,兩個閉合子圖重疊,重疊的部分必然是1個或者多個不重疊閉合圖。


    然后我們考慮不重疊的部分,這部分的點權和可以證明一定是非負。我們可以假設非重疊部分的點權和是負數,那么假如我們刪掉這部分,只選取重疊部分(因為重疊部分肯定是閉合圖),那么最大權也會變大,矛盾。所以非重疊部分點權和一定是非負數。
    下面繼續(xù)探討非重疊部分的性質。上面的證明已經得出他們的點權和一定是非負。下面先拋開點權和等于0的情況,先討論正數的情況。
假設兩個閉合子圖的非重疊部分都是正數,那么把這兩個部分加起來重新構成閉合圖,最大權必然會變大,與假設的兩個同為最大權的閉合圖矛盾。固可以證明非重疊部分的點權和肯定是0。

    探討到這部分,我們已經可以初步得出一個結論,就是一個最大權閉合子圖的點數多少問題只能受到一些0權和子圖(所有點權加起來等于0的子圖)的干擾。

    重點來到這些0權和子圖上。下面我們又來做一個假設,就是假設我們求出了一個最大權閉合子圖,并且里面有包含到一些0權和子圖。而我們這時候需要做的就是找到那些可以刪去的0權和子圖,當我們刪去了所有的這些子圖,那么點數就可以達到最小。

    關鍵來了。到底哪些0權和子圖是可以刪去的,哪些0權和子圖是不可以刪去的呢?

    根據閉合圖的性質,我們要刪除一個點,那么必須把所有能到達這個點的點刪去。那么很清晰的看到要刪除一個子圖,必須保證在這個子圖外沒有任何一個點指向這個子圖。也就是說這個子圖是封閉的,只有出邊,沒有入邊。



    最后一步,假如我們能證明在求解最大權閉合圖的過程中保證不會選上這些0權和子圖,那么這個證明就可以結束了。
通過最大流求解最大權閉合子圖,我們把正點權和源點建邊,邊權為點權值,負點權和匯點建邊,邊權為點權絕對值。仔細分析求解最大流的過程,會發(fā)現(xiàn)一些東西。

    由于那些可選可不選的0權和子圖是封閉的,沒有入邊的,那么在求解最大流的過程中,不可能有外部流補充,所以這些0權和子圖的每個點與源或者匯的邊都是滿流的。





    最后求最大權閉合子圖的點,方法是從源點開始通過非滿流邊搜索一個聯(lián)通圖,圖內的點(除了源點)就是求出來的最大權閉合子圖的點。而上面證明到0權和子圖的點和源匯都是滿流,并且沒有入邊,出邊也沒有流,那么肯定無法從源點搜索到。那么在求解的過程中這些0權和子圖的點是肯定沒有選上的。

   就此證畢。
   結論:通過最大流求解最大權閉合子圖的問題,求出來的閉合子圖點數也是最少的。

———————————————————————————————————————————————————
代碼:
#include <iostream>
#include 
<stdio.h>
#include 
<string.h>
using namespace std;
#define re(i, n) for (int i=0; i<n; i++)
#define re1(i, n) for (int i=1; i<=n; i++)
const int MAXN = 10002, MAXM = 120000, INF = ~0U >> 2;
struct edge {
    
int a, b, f, next;
    edge () {}
    edge (
int _a, int _b, int _f) : a(_a), b(_b), f(_f), next(-1) {}
} ed[MAXM 
+ MAXM];
int n, m = 0, s, t, hd[MAXN], tl[MAXN], st[MAXN], lev[MAXN], pr[MAXN], hs[MAXN], q[MAXN], now, res = 0, res_num = 0;
bool vst[MAXN];
void add_edge(int a, int b, int f)
{
    ed[m] 
= edge(a, b, f);
    
if (hd[a] != -1) tl[a] = ed[tl[a]].next = m++else hd[a] = tl[a] = m++;
    ed[m] 
= edge(b, a, 0);
    
if (hd[b] != -1) tl[b] = ed[tl[b]].next = m++else hd[b] = tl[b] = m++;
}
void init()
{
    freopen(
"profit.in""r", stdin);
    
int n0, m0, a0, b0, x;
    scanf(
"%d%d"&n0, &m0);
    n 
= n0 + 2; s = 0; t = n - 1;
    memset(hd, 
-1, n << 2); memset(tl, -1, n << 2);
    re1(i, n0) {
        cin 
>> x;
        
if (x > 0) {add_edge(s, i, x); res += x;}
        
if (x < 0) add_edge(i, t, -x);
    }
    re1(i, m0) {
        scanf(
"%d%d"&a0, &b0);
        add_edge(a0, b0, INF);
    }
    fclose(stdin);
}
void aug()
{
    
int z = hs[t], i = t, p;
    
while (i != s) {
        hs[i] 
-= z; p = pr[i]; ed[p].f -= z; ed[p ^ 1].f += z; i = ed[p].a;
        
if (!ed[p].f) now = i;
    }
    res 
-= z;
}
bool dfs()
{
    q[
0= s; memset(vst, 0, n); vst[s] = 1; lev[s] = 0;
    
int i, j, f0;
    
for (int front=0, rear=0; front<=rear; front++) {
        i 
= q[front];
        
for (int p=hd[i]; p != -1; p=ed[p].next) {
            j 
= ed[p].b; f0 = ed[p].f;
            
if (!vst[j] && f0) {vst[j] = 1; lev[j] = lev[i] + 1; q[++rear] = j;}
        }
    }
    
if (!vst[t]) return 0;
    now 
= s; memset(vst, 0, n); hs[s] = INF;
    re(i, n) st[i] 
= hd[i];
    
bool ff;
    
while (!vst[s]) {
        
if (now == t) aug();
        ff 
= 0;
        
for (int p=st[now]; p != -1; p=ed[p].next) {
            j 
= ed[p].b; f0 = ed[p].f;
            
if (lev[now] + 1 == lev[j] && !vst[j] && f0) {st[now] = pr[j] = p; hs[j] = hs[now] <= f0 ? hs[now] : f0; now = j; ff = 1break;}
        }
        
if (!ff) {
            vst[now] 
= 1;
            
if (now != s) now = ed[pr[now]].a;
        }
    }
    
return 1;
}
void solve()
{
    
while (dfs()) ;
    q[
0= s; memset(vst, 0, n); vst[s] = 1;
    
int i, j, f0;
    
for (int front=0, rear=0; front<=rear; front++) {
        i 
= q[front];
        
for (int p=hd[i]; p != -1; p=ed[p].next) {
            j 
= ed[p].b; f0 = ed[p].f;
            
if (!vst[j] && f0) {vst[j] = 1; res_num++; q[++rear] = j;}
        }
    }
}
void pri()
{
    freopen(
"profit.out""w", stdout);
    printf(
"%d\n%d\n", res, res_num);
    fclose(stdout);
}
int main()
{
    init();
    solve();
    pri();
    
return 0;
}

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            午夜免费日韩视频| 亚洲伦理久久| 久久精品国产2020观看福利| 亚洲电影欧美电影有声小说| 99国产精品| 亚洲第一区在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 欧美日韩视频免费播放| 久久久久久久网| 久久av一区| 免费成人在线视频网站| 久久综合亚州| 欧美成人精品一区二区| 欧美黄色片免费观看| 欧美午夜精品| 黄色成人在线网站| 亚洲国产高清在线| 日韩亚洲欧美综合| 亚洲视频导航| 久久亚洲视频| 国产精品一区二区a| 国产欧美va欧美va香蕉在| 国产日韩精品一区二区浪潮av| 国产精品女主播一区二区三区| 国产精品推荐精品| 亚洲国产精品va在线看黑人动漫| 国产欧美激情| 妖精视频成人观看www| 久久成人这里只有精品| 欧美高清自拍一区| 亚洲男人天堂2024| 欧美精品一区二区三区视频| 国产日韩亚洲欧美综合| 在线综合亚洲| 欧美激情a∨在线视频播放| 欧美在线免费| 国产日韩欧美成人| 亚洲一区三区电影在线观看| 亚洲一区二区免费| 加勒比av一区二区| 国内一区二区三区在线视频| 久久超碰97人人做人人爱| 亚洲天堂av在线免费| 国产精品无码永久免费888| 亚洲天堂偷拍| 午夜一区二区三区不卡视频| 国产精品一区二区久久久| 亚洲欧美亚洲| 欧美亚洲三级| 亚洲日本va午夜在线电影| 亚洲精品日韩在线| 国产精品第一区| 亚洲欧洲在线一区| 亚洲午夜精品国产| 99www免费人成精品| 欧美系列一区| 欧美啪啪成人vr| 欧美日韩一区二区三区四区在线观看 | 久久激情综合网| 亚洲人成人一区二区在线观看| 蜜桃久久av| 久久精品视频在线| 亚洲综合二区| 欧美激情小视频| 亚洲欧美日韩一区在线观看| 久久夜色精品国产亚洲aⅴ| 国产精品久久久久久久浪潮网站| 亚洲国产cao| 亚洲福利av| 欧美日韩午夜精品| 一区二区不卡在线视频 午夜欧美不卡在 | 欧美大片一区二区| 欧美激情综合色| 久久视频在线免费观看| 欧美a级一区二区| 久久久激情视频| 在线午夜精品| 国内精品视频一区| 日韩亚洲欧美精品| 一区二区三区成人精品| 亚洲一级免费视频| 亚洲网站视频| 亚洲国内欧美| 久久xxxx精品视频| 一卡二卡3卡四卡高清精品视频 | 老色批av在线精品| 一区二区三区高清| 美女国内精品自产拍在线播放| 久久国产精品99精品国产| 国产精品亚洲一区| 欧美激情一区在线| 女同性一区二区三区人了人一| 免费观看欧美在线视频的网站| 亚洲黑丝在线| 亚洲伦伦在线| 亚洲啪啪91| 久久只有精品| 美女日韩在线中文字幕| 国产精品欧美经典| 欧美福利电影在线观看| 欧美激情在线狂野欧美精品| 欧美一区二区成人| 嫩草影视亚洲| 久久精品国产久精国产爱| 国产精品自拍视频| 亚洲欧美日韩精品在线| 久久精品国产综合精品| 久久久亚洲精品一区二区三区| 欧美日韩人人澡狠狠躁视频| 性欧美暴力猛交69hd| 欧美成人有码| 久久久久一区二区三区| 欧美不卡视频一区发布| 亚洲国产一区二区三区高清| 国产精品一区二区久久久久| 亚洲欧美日韩直播| 亚洲高清二区| 免费高清在线视频一区·| 免费久久久一本精品久久区| 国产资源精品在线观看| 久久国产精品黑丝| 亚洲精品久久久蜜桃| 亚洲欧美在线一区| 国产欧美视频一区二区三区| 国产精品亚发布| 午夜免费久久久久| 制服丝袜激情欧洲亚洲| 亚洲欧美卡通另类91av| 性色av一区二区三区在线观看| 国产日韩欧美精品综合| 久久躁狠狠躁夜夜爽| 亚洲欧美日韩久久精品| 一本久久a久久免费精品不卡| 亚洲在线视频免费观看| 国产人久久人人人人爽| 亚洲影院免费观看| 欧美超级免费视 在线| 亚洲欧美在线一区| 亚洲女与黑人做爰| 浪潮色综合久久天堂| 欧美一区二区三区免费视| 欧美国产一区视频在线观看| 亚洲自拍啪啪| 亚洲电影成人| 国产综合在线看| 精品91免费| 99精品热6080yy久久| 亚洲一区在线观看视频| 午夜激情亚洲| aa日韩免费精品视频一| 尤物视频一区二区| 亚洲欧洲日本国产| 99re6热在线精品视频播放速度| 这里是久久伊人| 久久精品国产精品亚洲综合| 亚洲日本精品国产第一区| 国产精品久久久久久久午夜片| 老司机精品视频一区二区三区| 欧美极品在线观看| 国产精品成人免费视频| 黑人极品videos精品欧美裸| 欧美淫片网站| 蜜桃av一区| 欧美a级在线| 日韩亚洲欧美精品| 欧美性久久久| 亚洲在线不卡| 性视频1819p久久| 欧美久久久久中文字幕| 国产精品家庭影院| 一区二区久久久久| 久久亚洲欧美国产精品乐播| 亚洲一区国产精品| 国产一区二区三区在线播放免费观看 | 亚洲激情小视频| 午夜精品久久久久久久99热浪潮| 久久国产99| 免费不卡在线观看av| 国产精品资源在线观看| 性欧美长视频| 欧美99在线视频观看| 国产欧美一级| 欧美aⅴ一区二区三区视频| 亚洲一区二区三区激情| 国产欧美日韩中文字幕在线| 亚洲在线视频| 久热精品视频在线观看一区| 亚洲国产精品久久91精品| 欧美一区二区日韩| 蜜桃精品一区二区三区 | 午夜在线观看免费一区| 中文国产成人精品久久一| 国产精品久久综合| 国内精品视频在线播放| 99亚洲视频| 亚洲国内精品| 国产婷婷97碰碰久久人人蜜臀| 欧美一级片久久久久久久| 久久亚洲国产精品一区二区| 99人久久精品视频最新地址|