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

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



一道典型的最小點(diǎn)權(quán)覆蓋問(wèn)題,SAP速度很好看,之后需要搜索一下用過(guò)的點(diǎn),輸出即可。
代碼:
#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,加入了一個(gè)搜素點(diǎn)集元素的函數(shù),通過(guò)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 閱讀(237) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 網(wǎng)絡(luò)流

只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产一区二区日韩精品欧美精品| 在线观看久久av| 亚洲永久免费精品| 一区二区三区黄色| 国产精品入口日韩视频大尺度| 亚洲伊人一本大道中文字幕| 亚洲在线视频网站| 国产亚洲成年网址在线观看| 久久最新视频| 欧美人成在线视频| 欧美亚洲一区二区在线观看| 亚洲欧美另类在线观看| 韩国精品一区二区三区| 欧美国产日韩精品免费观看| 欧美精品免费看| 亚洲欧美中文在线视频| 久久久视频精品| 一本色道久久综合精品竹菊| 亚洲一区视频| 亚洲国产欧美一区二区三区久久| 91久久嫩草影院一区二区| 欧美先锋影音| 美女脱光内衣内裤视频久久网站| 欧美理论电影网| 久久久精品动漫| 欧美日韩aaaaa| 久久动漫亚洲| 欧美精品久久久久a| 久久成人亚洲| 欧美国产日韩视频| 久久久久久高潮国产精品视| 欧美国产一区在线| 久久久久99| 欧美色精品在线视频| 久久久久一区二区三区四区| 欧美日本簧片| 牛牛影视久久网| 国产精品亚洲综合色区韩国| 亚洲国产婷婷香蕉久久久久久99| 国产午夜精品久久久久久久| 99ri日韩精品视频| 亚洲福利视频一区二区| 午夜久久tv| 亚洲自拍都市欧美小说| 欧美精品v国产精品v日韩精品| 久久全球大尺度高清视频| 欧美日韩在线看| 亚洲第一在线| 在线精品国精品国产尤物884a| 亚洲欧美日本伦理| 亚洲一区二区成人在线观看| 久久综合影视| 嫩草伊人久久精品少妇av杨幂| 国产女主播在线一区二区| 99国产精品自拍| 日韩午夜激情av| 欧美大片在线观看| 亚洲成色999久久网站| 在线成人h网| 久久久久久久久久久久久9999| 久久超碰97中文字幕| 国产精品日韩电影| 亚洲一区二区三区久久| 亚洲一区久久久| 欧美日韩三级电影在线| 日韩一级大片| 亚洲欧美999| 国产精品日日摸夜夜添夜夜av| 一本色道久久综合亚洲精品小说| 一本色道88久久加勒比精品| 欧美人与性禽动交情品| 日韩一级片网址| 亚洲午夜黄色| 国产美女精品一区二区三区| 校园激情久久| 美日韩丰满少妇在线观看| 1204国产成人精品视频| 欧美成人蜜桃| 亚洲精品资源美女情侣酒店| 亚洲亚洲精品在线观看 | 麻豆成人在线播放| 激情久久久久久久久久久久久久久久| 久久岛国电影| 欧美激情视频网站| 日韩视频在线观看国产| 欧美视频在线看| 香蕉精品999视频一区二区| 久久亚洲高清| 99精品热6080yy久久| 国产精品久久久久久久久免费樱桃| 亚洲综合色婷婷| 免费久久精品视频| 亚洲小说欧美另类社区| 国产视频久久| 欧美成人激情在线| 在线视频欧美一区| 免费亚洲一区| 亚洲免费视频成人| 在线精品观看| 国产精品白丝av嫩草影院| 久久福利电影| 99精品国产福利在线观看免费| 欧美一区观看| 亚洲精品一区二区三区婷婷月| 国产精品久久久久三级| 另类亚洲自拍| 亚洲天堂成人在线视频| 欧美成人在线免费观看| 亚洲欧美综合一区| 亚洲精选一区二区| 国产原创一区二区| 欧美视频一区二区三区| 久久亚洲精品中文字幕冲田杏梨| 日韩视频在线一区二区| 男女av一区三区二区色多| 性色av一区二区三区在线观看 | 一区二区三区四区五区精品视频 | 国产乱码精品一区二区三区av| 美女脱光内衣内裤视频久久网站| 亚洲欧美日韩网| 亚洲日韩第九十九页| 麻豆成人在线| 久久深夜福利免费观看| 亚洲少妇一区| 亚洲毛片视频| 亚洲黄页视频免费观看| 国内激情久久| 国产欧美日韩在线播放| 国产精品久久久久77777| 欧美风情在线观看| 久久综合中文字幕| 久久久欧美精品| 久久久国产一区二区| 香蕉免费一区二区三区在线观看 | 欧美精品色综合| 久久综合一区二区| 久久亚洲色图| 久久蜜桃精品| 久久久久久久久久久久久9999| 香蕉视频成人在线观看| 羞羞漫画18久久大片| 午夜激情综合网| 性欧美大战久久久久久久久| 亚洲午夜极品| 午夜免费日韩视频| 欧美一级视频| 久久久久国内| 蜜乳av另类精品一区二区| 美女视频黄免费的久久| 欧美大秀在线观看| 欧美啪啪一区| 国产精品社区| 国产一区二区三区不卡在线观看| 国产日韩精品视频一区二区三区 | 欧美精品在线极品| 欧美视频在线观看视频极品| 国产精品九九久久久久久久| 欧美午夜免费影院| 国产精品一区免费在线观看| 国产日本欧美一区二区三区| 国产一区三区三区| 亚洲国产婷婷综合在线精品 | 亚洲一区二区在线看| 午夜精品久久久久久久99热浪潮 | av成人天堂| 亚洲欧美日韩在线高清直播| 久久成人免费日本黄色| 免费成人在线视频网站| 亚洲人成在线观看一区二区 | 免费亚洲一区二区| 亚洲精品国久久99热| 亚洲视频中文| 久久久久久亚洲精品杨幂换脸| 欧美精品18+| 国产精品综合av一区二区国产馆| 黄色亚洲精品| 一区二区日韩| 久久亚洲捆绑美女| 亚洲美女精品久久| 欧美综合77777色婷婷| 欧美精品1区| 国内成+人亚洲+欧美+综合在线| 亚洲精品乱码| 久久精品av麻豆的观看方式| 欧美激情一区在线| 欧美一区久久| 欧美日韩一区二区三区在线| 国内精品久久久| 亚洲一区二区精品在线观看| 久久色在线观看| 亚洲自拍偷拍麻豆| 欧美电影免费观看网站| 狠狠色狠狠色综合日日小说| 亚洲亚洲精品在线观看 | 久久国产精品一区二区| 亚洲黄色成人| 久久精品国产亚洲高清剧情介绍| 欧美日韩免费一区二区三区| 欲色影视综合吧| 久久久久久久久岛国免费|