锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品外国,国产婷婷97碰碰久久人人蜜臀,亚洲国产激情http://m.shnenglu.com/Ylemzy/category/16408.html瓚寵抗鐨勮凍榪?/description>zh-cnThu, 28 Apr 2011 19:23:32 GMTThu, 28 Apr 2011 19:23:32 GMT60poj 2987鈥斺旀渶澶ч棴鏉冨浘 榪愮敤鏈澶ф祦dinichttp://m.shnenglu.com/Ylemzy/articles/143801.html鐏⒊榛?/dc:creator>鐏⒊榛?/author>Sat, 09 Apr 2011 05:44:00 GMThttp://m.shnenglu.com/Ylemzy/articles/143801.htmlhttp://m.shnenglu.com/Ylemzy/comments/143801.htmlhttp://m.shnenglu.com/Ylemzy/articles/143801.html#Feedback0http://m.shnenglu.com/Ylemzy/comments/commentRss/143801.htmlhttp://m.shnenglu.com/Ylemzy/services/trackbacks/143801.htmlFiring

Description

You’ve finally got mad at “the world’s most stupid” employees of yours and decided to do some firings. You’re now simply too mad to give response to questions like “Don’t you think it is an even more stupid decision to have signed them?”, yet calm enough to consider the potential profit and loss from firing a good portion of them. While getting rid of an employee will save your wage and bonus expenditure on him, termination of a contract before expiration costs you funds for compensation. If you fire an employee, you also fire all his underlings and the underlings of his underlings and those underlings’ underlings’ underlings… An employee may serve in several departments and his (direct or indirect) underlings in one department may be his boss in another department. Is your firing plan ready now?

Input

The input starts with two integers n (0 < n ≤ 5000) and m (0 ≤ m ≤ 60000) on the same line. Next follows n + m lines. The first n lines of these give the net profit/loss from firing the i-th employee individually bi (|bi| ≤ 107, 1 ≤ in). The remaining m lines each contain two integers i and j (1 ≤ i, jn) meaning the i-th employee has the j-th employee as his direct underling.

Output

Output two integers separated by a single space: the minimum number of employees to fire to achieve the maximum profit, and the maximum profit.

Sample Input

5 5
8
-9
-20
12
-10
1 2
2 5
1 4
3 4
4 5

Sample Output

2 2

Hint

As of the situation described by the sample input, firing employees 4 and 5 will produce a net profit of 2, which is maximum.
棰樻剰錛?/span>
鍏徃瑕佽鍛橈紝瑁佹帀涓涓憳宸ワ紝浠栫殑涓嬪睘涔熷緱瑁佹帀銆傝鎺変竴涓憳宸ュ彲浠ュ皯鍙戜竴瀹氱殑宸ヨ祫錛屼絾浠栧凡緇忎粬鐨勪笅灞炲叏琚鎺夛紝鎵浠ヨ繖涓猵artment浼氬噺灝戜竴瀹氱殑鐢熶駭鍒╂鼎銆傛樉鐒訛紝瑁佹帀涓涓漢灝卞彲鑳藉緱鍒版敹鐩婏紙姝g殑鎴栬呰礋鐨勶級錛?/span>
緇欏嚭瑁佹帀涓涓憳宸ヨ兘鑾峰緱鐨勬敹鐩婏紙姝f垨璐燂級銆?/span>
緇欏嚭鍏徃閲屽憳宸ョ殑渚濊禆鍏崇郴銆傝〃紺篈鏈変笅灞濨
闂緱鍒扮殑鏈澶у埄鐩婁互鍙婅鎺夌殑鏈灝戜漢鏁般?/span>
鍒嗘瀽錛氬湪榪欎簺浜轟腑閫夎嫢騫蹭漢錛屼嬌寰楁敹鐩婃渶澶с傚鏋淎鏈変笅灞濨錛岄偅鎴戣鎺堿灝卞緱瑁佹帀B銆傛墍浠ヨ鎺塀鎴愪簡瑁佹帀A鐨勫繀瑕佹潯浠訛紝鍗矨渚濊禆浜嶣銆傛墍浠ヨA榪炲悜B錛孉->B瀹歸噺涓烘鏃犵┓銆?/span>
閭d箞閫夎嫢騫蹭漢浜嬫晥鐩婃渶澶у氨鏄眰榪欎釜鏉冮棴鍚堝浘鐨勬渶澶у箋?/span>
涔嬪悗瀵逛簬鏀剁泭鏄鐨勪漢錛宻->x瀹歸噺涓烘敹鐩婂鹼紝瀵逛簬鏀剁泭鏄礋鐨勪漢x->t錛屽閲忎負鏀剁泭鍊煎緱緇濆鍊箋?/span>
緇撴灉灝辨槸姝f潈鍊煎拰-鏈灝忓壊鍊鹼紙鏈澶ф祦錛氬浘涓垏鍓叉渶灝忕殑鍊鹼級=鏈澶ф潈闂悎鍥劇殑鍊箋?/span>
榪欎釜鍥句粠s鍑哄彂鐨勮竟閮芥槸鏀剁泭錛屼粠x->t鐨勮竟閮芥槸娑堣椼傞偅姹傛渶灝忓壊灝辨槸瀵逛簬緇欏嚭鐨勮繖涔堝鐨勬敹鐩婏紝閫氳繃澶氬皯娑堣楄兘璁╁彇寰楃殑鏀剁泭鏈澶с?/span>
閭f渶鍚庣殑鍒╂鼎灝辨槸錛氭誨埄娑﹀拰-鍙栧緱鍒╂鼎鏈澶ф墍闇鐨勬秷鑰椼?/span>
#include <iostream>
#include 
<stdlib.h>
using namespace std;
const int maxn= 20010;
const __int64 inf=0x7fffffff;
struct node
{
    __int64 v,next;
    __int64 w;
}fn[
500010];
__int64 level[maxn],g[maxn],que[maxn],
out[maxn],th, tip, visit[maxn];
inline 
void add(__int64 u,__int64 v,__int64 w)
{
    fn[th].v 
= v, fn[th].w = w, fn[th].next = g[u], g[u] = th++;    
    fn[th].v 
= u, fn[th].w = 0, fn[th].next = g[v], g[v] = th++;
}
void build_level(__int64  n,__int64 s,__int64  e)
{
    __int64 h
=0,r=0,i,u;    
    
for (i = 0; i <= n; i++) level[i]=0;
    level[s] 
= 1;
    que[
0= s;
    
while(h <= r)
    {
        u 
= que[h++];
        
for (i = g[u]; i != -1; i = fn[i].next)
        {
            
if (fn[i].w && level[fn[i].v] == 0)
            {
                que[
++r] = fn[i].v;
                level[fn[i].v] 
= level[u] + 1;
             }
        }
    }
 }
__int64 dinic(__int64 n,__int64 s,__int64 e)
{
    __int64 ret
=0,i;
    
while(1)
    {
        build_level(n,s,e);
        
if (level[e] == 0break;
        
for (i = 0; i < n; ++i) out[i] = g[i];
        __int64 q 
= -1;
        
while(1)
        {
            
if (q < 0)
            {
                
for (i = out[s]; i != -1; i = fn[i].next)
                {
                    
if (fn[i].w && out[fn[i].v] != -1 && level[fn[i].v] == 2)
                    {
                        que[
++q] = i;
                        
out[s] = fn[i].next;
                        
break;
                    }
                }
                
if (i == -1)
                {
                    
break;
                }
            }
            __int64 u 
= fn[que[q]].v;
            
if(u == e)
            {
                __int64 tmp
=inf;
                
for(i = 0;i <= q; i++)
                    
if(tmp > fn[que[i]].w)tmp = fn[que[i]].w;
                ret 
+= tmp;
                
for(i=0;i<=q;i++)
                {
                    fn[que[i]].w 
-= tmp;
                    fn[que[i]
^1].w += tmp;   
                }
                
for (i = 0; i <= q; i++)
                {
                    
if(fn[que[i]].w == 0)
                    {
                        q 
= i-1;
                        
break;
                    }
                }
            }
            
else
            {
                
for (i = out[u]; i != -1; i = fn[i].next)
                {
                    
if (fn[i].w && out[fn[i].v] !=-1 && level[u] + 1 == level[fn[i].v]) 
                    {
                        que[
++q] = i, out[u] = fn[i].next;
                        
break;
                    }
                }
                
if(i==-1)
                {
                    
out[u] = -1, q--;
                 }
              
            }
        }
    }
    
return ret;
}
void dfs(int s, int e)
{
    
int i;
    
if (s == e)
    {
        
return;
    }
    
for (i = g[s]; i != -1; i++)
    {
        
if (!visit[fn[i].v] && fn[i].w)
        {
            dfs(fn[i].v, e);
        }
    }
}
int main()
{
    __int64 m, n, t, u, v, i, j, start, end, sum, num, w, ans;
    
int k = 0;
    
while (scanf("%I64d%I64d"&n, &m) - EOF)
    {
        k
++;
        start 
= 0, end = n + 1, th = 0;
        
for (i = 0; i <= end; i++)
        {
            g[i] 
= -1;
        }
        
for (i = 1, sum = 0; i <= n; i++)
        {
            scanf(
"%I64d"&num);
            
if (num >= 0)
            {
                add(start, i, num);
                sum 
+= num;
            }
            
else
            {
                add(i, end, 
-num);
            }
        }
        
for (j = 1; j <= m; j++)
        {
            scanf(
"%I64d%I64d"&u, &v);
            add(u, v, inf);
        }
        sum 
-= dinic(end + 1, start, end);
        tip 
= 0;
        
for (i = 0; i <= end + 1; i++)
        {
            visit[i] 
= 0;
        }
        dfs(
0, end);
        
for (i = 0, tip = 0; i <= end + 1; i++)
        {
            
if (visit[i])
            {
                tip
++;
            }
        }
        printf(
"%I64d %I64d\n", tip, ans);
    }
    
//system("pause");
    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>
            影音先锋亚洲视频| 新67194成人永久网站| 中国女人久久久| 一区二区久久久久| 亚洲精品一区二区三区av| 欧美高清自拍一区| 亚洲免费观看高清完整版在线观看| 久久中文久久字幕| 亚洲日本激情| 亚洲视频图片小说| 久久先锋资源| 国产视频在线一区二区| 亚洲另类一区二区| 亚洲神马久久| 亚洲欧美日韩专区| 先锋影音国产精品| 欧美激情a∨在线视频播放| 在线视频精品一区| 免费日韩av电影| 国产精品综合| 亚洲一区二区欧美日韩| 欧美成人69av| 久久一区二区三区超碰国产精品| 欧美乱妇高清无乱码| 国产自产在线视频一区| 中文一区字幕| 欧美激情亚洲自拍| 久久激情网站| 国产精品一区二区a| 亚洲一区二区三区乱码aⅴ| 亚洲盗摄视频| 农村妇女精品| 亚洲乱码国产乱码精品精可以看| 久久人体大胆视频| 久久综合福利| 一本色道久久综合狠狠躁篇怎么玩| 欧美激情亚洲| 欧美电影免费| 欧美不卡一卡二卡免费版| 在线日韩av| 久久精品国产一区二区三区免费看| 亚洲精品日韩欧美| 欧美午夜国产| 久久精品国产精品亚洲精品| 欧美在线观看视频一区二区三区| 黑人中文字幕一区二区三区| 欧美激情国产精品| 国产伦精品一区二区三| 另类成人小视频在线| 欧美理论电影网| 久久精品综合| 欧美在线你懂的| 小黄鸭精品aⅴ导航网站入口 | 亚洲欧美在线aaa| 午夜性色一区二区三区免费视频| 国产一区二区三区久久精品| 欧美成va人片在线观看| 国产精品久久久久久模特| 亚洲成色www久久网站| 国产一区二区三区电影在线观看| 亚洲国产精品久久久久秋霞影院| 国产精品一区二区久久久久| 亚洲精品久久久久久下一站| 亚洲激情成人在线| 久久嫩草精品久久久久| 久久精品国产第一区二区三区| 国产精品网站在线播放| 日韩图片一区| 在线一区二区三区做爰视频网站| 麻豆国产精品一区二区三区 | 日韩视频在线观看一区二区| 亚洲欧美日韩在线播放| 欧美国产成人在线| 久久久综合视频| 国产有码一区二区| 久久久久久亚洲精品中文字幕 | 亚洲欧美日本伦理| 欧美视频三区在线播放| 99伊人成综合| 欧美在线二区| 亚洲日本成人| 国产精品白丝av嫩草影院 | 久久精品视频在线播放| 国产在线精品二区| 免费成人av在线看| 在线亚洲一区观看| 欧美a级一区二区| 性欧美长视频| 亚洲欧洲日本国产| 欧美色欧美亚洲另类二区| 欧美一区二区三区的| 亚洲高清一区二| 先锋影音久久| 亚洲一区区二区| 亚洲国产精品传媒在线观看 | 免费日韩一区二区| 日韩一级精品视频在线观看| 久久精品二区三区| 亚洲婷婷综合色高清在线| 久久精品国产99国产精品澳门| 国产欧美精品va在线观看| 久久久国产午夜精品| 亚洲午夜日本在线观看| 亚洲激情一区二区| 麻豆精品视频在线观看| 欧美一区二区在线观看| 在线视频免费在线观看一区二区| 亚洲国产精品va在看黑人| 国产原创一区二区| 国产在线高清精品| 国产一区999| 国产一区二区中文| 国内精品久久久久久久97牛牛| 国产精品免费在线| 国产精品免费网站| 国产在线视频欧美一区二区三区| 国产精品一区=区| 国产日韩亚洲欧美综合| 伊人久久综合| 亚洲视频精品在线| 久久se精品一区精品二区| 久久久噜噜噜久久| 亚洲国产精品毛片| 亚洲午夜视频| 久久尤物视频| 欧美午夜精品久久久久免费视| 国产精品国产三级国产普通话蜜臀 | 国产亚洲一级| 91久久精品美女高潮| 亚洲欧美激情四射在线日 | 国产精品夜色7777狼人| 国产精品美女久久久免费| 怡红院精品视频在线观看极品| 夜夜精品视频一区二区| 久久一区二区视频| 亚洲欧美国产三级| 欧美日韩国产精品自在自线| 国产在线拍揄自揄视频不卡99 | 一区二区三区在线免费观看| 99re热精品| 亚洲国产成人不卡| 久久久一二三| 亚洲国产精品一区二区www| 久久国产高清| 性欧美精品高清| 国产精品免费看| 亚洲在线黄色| 亚洲天堂成人在线观看| 欧美美女福利视频| 亚洲人成久久| 亚洲精品日韩精品| 久久av红桃一区二区小说| 欧美在线日韩| 久久久一二三| 欧美午夜电影完整版| 欧美视频一区二区| 国内精品久久久久久久影视麻豆| 中国成人黄色视屏| 亚洲精品国产精品乱码不99按摩| 在线一区日本视频| 日韩午夜电影| 香蕉久久夜色精品| 亚洲欧美一区二区三区极速播放| 亚洲视频网站在线观看| 久久久女女女女999久久| 亚洲午夜电影网| 老**午夜毛片一区二区三区| 欧美色另类天堂2015| 国产麻豆精品视频| 99精品视频免费在线观看| 午夜精品一区二区在线观看| 黄色精品免费| 亚洲二区在线| 免费不卡在线观看| 国产精品入口夜色视频大尺度| 午夜视频在线观看一区| 久久精品中文字幕一区| 99视频精品| 老司机久久99久久精品播放免费| 一区二区高清视频| 欧美不卡一卡二卡免费版| 亚洲精选大片| 久久久精品2019中文字幕神马| 99亚洲一区二区| 1024国产精品| 久久久国产一区二区三区| 亚洲一区3d动漫同人无遮挡| 免费在线观看日韩欧美| 久久久久久伊人| 国产人久久人人人人爽| 亚洲深夜福利在线| 午夜一区不卡| 国产精品最新自拍| 欧美一区二区三区电影在线观看| 亚洲影院在线| 国产精品xnxxcom| 亚洲欧美国产精品专区久久| 久久国产精品一区二区三区| 国产美女精品人人做人人爽| 亚洲欧美成人精品|