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

posts - 7,comments - 3,trackbacks - 0
Destroying The Graph
Time Limit: 2000MSMemory Limit: 65536K
Total Submissions: 4718Accepted: 1436Special Judge

Description

Alice and Bob play the following game. First, Alice draws some directed graph with N vertices and M arcs. After that Bob tries to destroy it. In a move he may take any vertex of the graph and remove either all arcs incoming into this vertex, or all arcs outgoing from this vertex. 
Alice assigns two costs to each vertex: Wi+ and Wi-. If Bob removes all arcs incoming into the i-th vertex he pays Wi+ dollars to Alice, and if he removes outgoing arcs he pays Wi- dollars. 
Find out what minimal sum Bob needs to remove all arcs from the graph.

Input

Input file describes the graph Alice has drawn. The first line of the input file contains N and M (1 <= N <= 100, 1 <= M <= 5000). The second line contains N integer numbers specifying Wi+. The third line defines Wi- in a similar way. All costs are positive and do not exceed 106 . Each of the following M lines contains two integers describing the corresponding arc of the graph. Graph may contain loops and parallel arcs.

Output

On the first line of the output file print W --- the minimal sum Bob must have to remove all arcs from the graph. On the second line print K --- the number of moves Bob needs to do it. After that print K lines that describe Bob's moves. Each line must first contain the number of the vertex and then '+' or '-' character, separated by one space. Character '+' means that Bob removes all arcs incoming into the specified vertex and '-' that Bob removes all arcs outgoing from the specified vertex.

Sample Input

3 6
1 2 3
4 2 1
1 2
1 1
3 2
1 2
3 1
2 3

Sample Output

5
3
1 +
2 -
2 +

Source

Northeastern Europe 2003, Northern Subregion



一道典型的最小點權覆蓋問題,SAP速度很好看,之后需要搜索一下用過的點,輸出即可。
代碼:
#include <iostream>
#include 
<cstdio>
#include 
<cstring>
#include 
<cmath>
#define N 10010
#define M 20010
#define inf 1 << 30
#define eps 1 << 29
using namespace std;

int mark[N];
int cnt, n, m, s, t;
int head[N];
int NN;

struct edge
{
    
int v, next, w;
} edge[M];

void addedge(int u, int v, int w)
{
    edge[cnt].v 
= v;
    edge[cnt].w 
= w;
    edge[cnt].next 
= head[u];
    head[u] 
= cnt++;
    edge[cnt].v 
= u;
    edge[cnt].w 
= 0;
    edge[cnt].next 
= head[v];
    head[v] 
= cnt++;
}

int sap()
{
    
int pre[N], cur[N], dis[N], gap[N];
    
int flow = 0, aug = inf, u;
    
bool flag;
    
for (int i = 1; i <= NN; ++i)
    {
        cur[i] 
= head[i];
        gap[i] 
= dis[i] = 0;
    }
    gap[s] 
= NN;
    u 
= pre[s] = s;
    
while (dis[s] < NN)
    {
        flag 
= 0;
        
for (int &= cur[u]; j != -1; j = edge[j].next)
        {
            
int v = edge[j].v;
            
if (edge[j].w > 0 && dis[u] == dis[v] + 1)
            {
                flag 
= 1;
                
if (edge[j].w < aug) aug = edge[j].w;
                pre[v] 
= u;
                u 
= v;
                
if (u == t)
                {
                    flow 
+= aug;
                    
while (u != s)
                    {
                        u 
= pre[u];
                        edge[cur[u]].w 
-= aug;
                        edge[cur[u] 
^ 1].w += aug;
                    }
                    aug 
= inf;
                }
                
break;
            }
        }
        
if (flag)
            
continue;
        
int mindis = NN;
        
for (int j = head[u]; j != -1; j = edge[j].next)
        {
            
int v = edge[j].v;
            
if (edge[j].w > 0 && dis[v] < mindis)
            {
                mindis 
= dis[v];
                cur[u] 
= j;
            }
        }
        
if ((--gap[dis[u]]) == 0)
            
break;
        gap[dis[u] 
= mindis + 1]++;
        u 
= pre[u];
    }
    
return flow;
}

void init()
{
    cnt 
= 0;
    memset(head, 
-1sizeof(head));
    memset(mark, 
0sizeof(mark));
}

void dfs(int x)      //不同于單純的SAP,加入了一個搜素點集元素的函數,通過head數組的記錄信息搜索。
{
    mark[x] 
= 1;
    
for (int i = head[x]; i; i = edge[i].next)
    {
        
if (edge[i].w > 0 && !mark[edge[i].v]) dfs(edge[i].v);
    }
}

int main()
{
    
while (scanf("%d%d"&n, &m) != EOF)
    {
        init();
        
int wp[101], wm[101], w, len = 1, ans[105];
        s 
= 0;
        t 
= 2 * n + 1;
        NN 
= 2 * n + 2;
        
for (int i = 1; i <= n; ++i)
        {
            scanf(
"%d"&wp[i]);
            addedge(i 
+ n, t, wp[i]);
        }
        
for (int i = 1; i <= n; ++i)
        {
            scanf(
"%d"&wm[i]);
            addedge(s, i, wm[i]);
        }
        
for (int i = 1; i <= m; ++i)
        {
            
int x, y;
            scanf(
"%d%d"&x, &y);
            addedge(x, y 
+ n, inf);
        };
        w 
= sap();
        dfs(s);
        
for (int i = 1; i <= n; ++i)
        {
            
if (!mark[i]) ans[len++= i;
            
if (mark[i + n]) ans[len++= i + n;
        }
        len
--;
        printf(
"%d\n%d\n", w, len);
        
for (int i = 1; i <= len; ++i)
        {
            
if (ans[i] <=n) printf("%d -\n", ans[i]);
            
else printf("%d +\n", ans[i] - n);
        }
    }
    
return 0;
}

posted on 2011-10-15 22:09 LLawliet 閱讀(230) 評論(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>
            一区二区三区四区蜜桃| 亚洲欧美成人一区二区在线电影 | 亚欧美中日韩视频| 亚洲免费在线电影| 国产日韩专区在线| 欧美一区免费视频| 久久精品国产96久久久香蕉| 国内精品久久久| 欧美黑人国产人伦爽爽爽| 欧美成人dvd在线视频| 亚洲国产精品久久久久| 久久国产精品99国产| 久久永久免费| 亚洲综合精品| 麻豆久久久9性大片| 亚洲尤物精选| 久久嫩草精品久久久久| 亚洲色图制服丝袜| 久久天天躁狠狠躁夜夜爽蜜月| 日韩一级不卡| 另类图片综合电影| 欧美一级一区| 欧美午夜不卡| 亚洲精品精选| 91久久久久久国产精品| 欧美一区二区三区四区在线观看地址| 亚洲精品视频在线看| 亚洲欧美在线磁力| 亚洲图片在线| 欧美日韩国产色视频| 性欧美长视频| 欧美日韩一区二区三区在线看| 久久久精品国产免大香伊| 久热精品在线视频| 免费观看成人| 亚洲国产一区视频| 欧美成人激情视频| 久久综合亚州| 黄色成人在线免费| 久久一综合视频| 亚洲高清视频中文字幕| 在线视频一区二区| 国产精品久久久久国产a级| 一本色道久久综合亚洲精品小说| 在线视频欧美日韩精品| 国产精品九九| 久久国产精品免费一区| 亚洲人成啪啪网站| 欧美有码视频| 1769国产精品| 欧美日韩免费观看一区=区三区| 亚洲电影av| 午夜在线一区二区| 亚洲国产精品成人综合| 欧美日韩一区二区免费在线观看| 亚洲在线视频| 久久久av网站| 亚洲一区二区三| 亚洲承认在线| 国产日韩欧美一二三区| 欧美日韩在线第一页| 麻豆精品网站| 亚洲欧美日韩中文视频| 亚洲人成在线观看| 欧美激情四色| 亚洲国产精品尤物yw在线观看 | 欧美刺激性大交免费视频| 亚洲欧美日韩在线一区| 夜夜爽99久久国产综合精品女不卡| 在线观看精品| 日韩亚洲欧美一区| 亚洲精品欧洲| 日韩系列在线| 亚洲专区欧美专区| 久久久久久久一区| 欧美96在线丨欧| 欧美日韩视频在线第一区| 国产精品伦一区| 国产亚洲欧美另类一区二区三区| 激情久久中文字幕| 亚洲深夜影院| 久久久精品日韩| 亚洲人成绝费网站色www| 亚洲亚洲精品在线观看 | 久久久精品国产免大香伊| 久久免费国产精品1| 亚洲美洲欧洲综合国产一区| 欧美在线亚洲在线| 欧美视频在线看| 亚洲全部视频| 久久在线免费观看视频| 亚洲线精品一区二区三区八戒| 欧美一级在线视频| 国产精品成人观看视频国产奇米| 激情五月综合色婷婷一区二区| 中文国产成人精品久久一| 欧美成人精品福利| 久久av一区二区三区亚洲| 国产精品黄色| 亚洲一区在线免费观看| 久久夜色精品国产欧美乱| 中文国产一区| 国产精品久久久久久久久免费桃花 | 国内精品久久久久久久影视蜜臀 | 亚洲免费观看视频| 欧美婷婷久久| 亚洲午夜极品| 亚洲一区在线播放| 国产精品毛片一区二区三区| 亚洲综合色网站| 亚洲一区二区三区午夜| 国产麻豆日韩| 欧美va天堂| 欧美丝袜一区二区| 性色av一区二区三区在线观看| 一本久久a久久免费精品不卡| 国产精品99一区二区| 亚洲欧美综合v| 欧美中文字幕在线观看| 亚洲国产高清在线| 亚洲精品综合| 黄色成人在线观看| 99视频在线观看一区三区| 国产一区二区丝袜高跟鞋图片| 欧美激情麻豆| 国产一二三精品| 日韩午夜激情av| 亚洲国产精品久久久久久女王| 亚洲精选中文字幕| 一区二区三区在线视频播放| 日韩小视频在线观看| 亚洲黄色免费网站| 欧美制服丝袜| 亚洲一区二区三区午夜| 男男成人高潮片免费网站| 欧美一区午夜精品| 国产精品美女| 一区二区三区**美女毛片| 亚洲美女91| 欧美韩国在线| 99精品热视频| 亚洲一区二区av电影| 欧美人成免费网站| 最新高清无码专区| 亚洲激情av在线| 欧美激情亚洲国产| 亚洲国产精品va在线看黑人动漫 | 亚洲永久免费观看| 国产精品久久7| 亚洲小说欧美另类婷婷| 欧美一区二区三区视频免费播放| 国产精品久久久久久久第一福利 | 在线观看视频免费一区二区三区| 久久国产精品久久久| 老司机精品视频网站| 亚洲国产成人精品久久久国产成人一区| 久久精品国产一区二区电影| 欧美www视频| 日韩视频一区二区三区在线播放 | 亚洲国产精品视频一区| 一区二区激情视频| 日韩午夜三级在线| 亚洲精品免费在线| 亚洲免费高清视频| 一区二区三区日韩精品视频| 国产区亚洲区欧美区| 欧美精品福利在线| 久久三级视频| 久久久噜噜噜久久人人看| 亚洲视频在线视频| 日韩西西人体444www| 亚洲第一福利视频| 欧美chengren| 久久阴道视频| 老色批av在线精品| 久久精品国产一区二区三| 亚洲女性裸体视频| 亚洲免费在线观看视频| 亚洲一区二区在线观看视频| 99天天综合性| 亚洲图片在区色| 亚洲欧美日韩国产综合在线| 欧美在线日韩精品| 久久国产成人| 久久久久国产一区二区| 欧美成人午夜激情视频| 99精品视频一区| 久久久激情视频| 欧美国产一区二区| 国产九区一区在线| 亚洲国产精品成人| 亚洲在线中文字幕| 久久久精品日韩| 亚洲天堂偷拍| 免费观看久久久4p| 国产精品久久久久久久久免费樱桃| 国产精品成人va在线观看| 亚洲精品之草原avav久久| 欧美亚洲在线视频| 一区二区三区日韩欧美精品|