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

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,加入了一個搜素點集元素的函數(shù),通過head數(shù)組的記錄信息搜索。
{
    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>
            亚洲欧美日韩天堂一区二区| 免费在线欧美视频| 亚洲一区二区影院| 久久精品电影| 一区二区三区免费网站| 校园春色综合网| 久久久久久久久一区二区| 免费国产自线拍一欧美视频| 国产精品看片你懂得| 亚洲国产欧美日韩精品| 中文精品99久久国产香蕉| 久久理论片午夜琪琪电影网| 日韩午夜在线电影| 欧美—级a级欧美特级ar全黄| 国产偷久久久精品专区| 中文国产成人精品| 亚洲国产一区二区三区在线播| 亚洲砖区区免费| 欧美日韩亚洲一区二区三区在线| 国产午夜精品久久| 欧美一区在线直播| 中文高清一区| 欧美日韩一区综合| aa级大片欧美三级| 最新成人av在线| 香港久久久电影| 亚洲一区二区三区中文字幕在线 | 欧美日韩黄视频| 日韩视频二区| 亚洲成人在线视频播放 | 亚洲第一视频网站| 久热精品视频| 亚洲人成亚洲人成在线观看| 女同一区二区| 欧美国产专区| 午夜影院日韩| 蜜桃av综合| 一区二区国产日产| 一区二区三区日韩精品| 免费亚洲一区| 欧美视频在线观看一区二区| 亚洲私人影院在线观看| 欧美一区=区| 亚洲国产经典视频| 99精品热视频| 尤物yw午夜国产精品视频明星| 女女同性女同一区二区三区91| 欧美成人黄色小视频| 亚洲综合色丁香婷婷六月图片| 亚洲欧美在线aaa| 亚洲国产清纯| 亚洲国产精品99久久久久久久久| 亚洲国产精品激情在线观看| 国产精品美女久久久久久2018| 久久午夜电影| 亚洲黄色在线视频| 国产亚洲欧洲一区高清在线观看| 欧美成人精精品一区二区频| 国产精品欧美风情| 亚洲激情婷婷| 亚洲日本免费| 久久人人97超碰精品888| 亚洲欧美日韩精品久久亚洲区 | 99精品视频免费全部在线| 国产欧美日韩一区| 中文日韩欧美| 中文在线一区| 欧美老女人xx| 亚洲美女在线视频| 日韩视频免费观看高清在线视频 | 国产午夜精品一区二区三区视频| 一本大道久久a久久精品综合| 亚洲美女网站| 欧美揉bbbbb揉bbbbb| 亚洲高清不卡av| 日韩网站在线观看| 欧美激情一区在线观看| 亚洲国产成人久久综合一区| 亚洲国产成人91精品| 欧美阿v一级看视频| 亚洲黄色免费网站| 日韩视频亚洲视频| 欧美视频免费在线| 亚洲欧美一区二区激情| 久久综合精品一区| 99re热这里只有精品视频| 欧美日韩国产色视频| 一本色道久久99精品综合| 午夜精品久久久久久99热| 精品动漫3d一区二区三区免费版 | 性刺激综合网| 欧美激情影院| 欧美在线免费观看视频| 在线日韩中文字幕| 欧美三级中文字幕在线观看| 欧美亚洲日本国产| 亚洲黄色免费电影| 麻豆精品91| 性欧美xxxx视频在线观看| 欧美激情第三页| 午夜欧美理论片| 亚洲免费观看高清完整版在线观看熊 | 亚洲国产高清自拍| 国产精品稀缺呦系列在线| 免费观看亚洲视频大全| 亚洲一区在线观看免费观看电影高清| 欧美成人精品激情在线观看| 午夜精品久久久久久99热软件| 亚洲日韩中文字幕在线播放| 国产欧美日韩视频| 国产精品mv在线观看| 欧美日韩国产限制| 免费一区二区三区| 久久久久高清| 久久久久久久久久久久久女国产乱 | 欧美一区二区成人6969| 亚洲精品免费在线| 欧美激情bt| 久久亚洲午夜电影| 欧美在线一级视频| 亚洲一区免费网站| 一区二区高清| 在线一区二区三区四区| 亚洲高清三级视频| 国精品一区二区| 狠狠色噜噜狠狠色综合久| 国内精品美女av在线播放| 国产伦精品一区二区三区四区免费| 久久综合久久综合九色| 久久免费国产精品| 9久re热视频在线精品| 99视频有精品| 亚洲永久视频| 欧美亚洲在线播放| 99国产麻豆精品| 一本色道久久综合亚洲精品婷婷 | 宅男精品视频| 亚洲一级黄色av| 欧美亚洲综合另类| 欧美在线黄色| 欧美xxx成人| 国产精品久久久久久久电影| 国产精品电影观看| 国内精品视频在线播放| 亚洲人www| 亚洲欧美激情在线视频| 欧美一区二区视频在线观看2020| 久久精品日产第一区二区三区| 久久久成人网| 亚洲精品在线三区| 欧美亚洲一区| 欧美精品一区二区高清在线观看| 欧美三级电影一区| 一区二区三区在线视频免费观看| 亚洲电影在线| 亚洲一区二区三区午夜| 美女网站久久| 亚洲午夜久久久| 久久亚洲欧美| 韩国v欧美v日本v亚洲v| 一级成人国产| 久久激情视频| 午夜精品美女久久久久av福利| 欧美大片在线看| 影音先锋成人资源站| 欧美与黑人午夜性猛交久久久| 亚洲美女精品久久| 亚洲影视在线播放| 中文在线不卡| 国产精品视频专区| 欧美91福利在线观看| 欧美日韩不卡合集视频| 亚洲一区二区三区中文字幕在线| 亚洲国产日韩欧美| 亚洲一区二区三区在线视频| 欧美午夜精品理论片a级按摩| 一区二区三区导航| 国产老肥熟一区二区三区| 午夜精品在线视频| 日韩亚洲在线| 欧美午夜女人视频在线| 欧美在线亚洲综合一区| 欧美在线免费视频| 亚洲国产精品一区二区三区| 欧美激情精品久久久久久| 欧美精品一区二区三区很污很色的 | 亚洲美女av电影| 国产女人18毛片水18精品| 欧美99久久| 国产精品久久久久国产a级| 久久人人97超碰国产公开结果| 欧美激情精品久久久六区热门| 亚洲精品美女91| 午夜久久一区| 99这里只有久久精品视频| 亚洲一区在线免费观看| 亚洲精品五月天| 欧美一级日韩一级| 午夜精品福利一区二区三区av| 欧美成年人视频网站|