亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

poj 3160 Father Christmas flymouse(強連通縮點+最長路)

2019-11-11 01:58:41
字體:
來源:轉載
供稿:網友

題目地址:http://poj.org/PRoblem?id=3160

思路:將所有點權值為負數的點設為0,,同一強連通分量中的點可全部選擇,因此將其看做一點。在新圖中求最長路徑即可。最長路徑:由于為給定起點,(1)從所有入度為0的點開始,進行DFS;(2)設置一虛擬節點,將其與入度為0的點相連,SPFA求最長路徑。

SPFA版

#include<cstdio>#include<vector>#include<queue>#include<cstring>#include<iostream>#include<algorithm>using  namespace std;const int  maxn=30000+50;const int maxm=150000+50;const int INF=0x3f3f3f3f;struct Node{    int x,y;};queue<int> q;Node e[maxm];int all,n,m,top,cnt;int s[100000],d[maxn];int vw[maxn],v[maxn];int vis[maxn],sc[maxn];int dfn[maxn],low[maxn];int scvw[maxn],dist[maxn];vector<int> g[maxn],scg[maxn];void init(){    top=all=cnt=0;    memset(s,0,sizeof(s));    memset(d,0,sizeof(d));    memset(sc,0,sizeof(sc));    memset(vis,0,sizeof(vis));    memset(dfn,0,sizeof(dfn));    memset(low,0,sizeof(low));    memset(scvw,0,sizeof(scvw));    for(int i=1; i<=n; i++) g[i].clear(),scg[i].clear();}void Tarjan(int u){    all++,dfn[u]=low[u]=all;    top++,s[top]=u,vis[u]=1;    for(int i=0; i<g[u].size(); i++)    {        int nt=g[u][i];        if(!dfn[nt])        {            Tarjan(nt);            low[u]=min(low[u],low[nt]);        }        else        {            if(vis[nt])                low[u]=min(low[u],dfn[nt]);        }    }    if(low[u]==dfn[u])    {        cnt++;        while(s[top+1]!=u)        {            sc[s[top]]=cnt;            vis[s[top]]=0;            top--;        }    }}int SPFA(int s){    memset(v,0,sizeof(v));    while(!q.empty()) q.pop();    for(int i=1;i<=cnt;i++) dist[i]=-INF;    v[s]=1,q.push(s),dist[s]=0;    while(!q.empty())    {        int now=q.front();        q.pop(),v[now]=0;        for(int i=0;i<scg[now].size();i++)        {            int nt=scg[now][i];            if(dist[nt]<dist[now]+scvw[nt])            {                dist[nt]=dist[now]+scvw[nt];                if(!v[nt])                {                    v[nt]=1;                    q.push(nt);                }            }        }    }    int ans=-INF;    for(int i=1;i<=cnt;i++) ans=max(ans,dist[i]);    return ans;}int main(){    while(scanf("%d%d",&n,&m)!=EOF)    {        init();        for(int i=1; i<=n; i++) scanf("%d",&vw[i]);        for(int i=0; i<m; i++)        {            int x,y;            scanf("%d%d",&x,&y);            x++,y++;            e[i].x=x,e[i].y=y;            g[x].push_back(y);        }        for(int i=1; i<=n; i++)            if(!dfn[i]) Tarjan(i);        for(int i=1; i<=n; i++)            scvw[sc[i]]+=(vw[i]>0?vw[i]:0);        for(int i=0; i<m; i++)        {            int x=sc[e[i].x],y=sc[e[i].y];            if(x!=y)            {                d[y]++;                scg[x].push_back(y);            }        }        for(int i=1; i<=cnt; i++)        {            if(!d[i]) scg[0].push_back(i);        }        printf("%d/n",SPFA(0));    }    return 0;}DFS版

#include<cstdio>#include<vector>#include<cstring>#include<iostream>#include<algorithm>using  namespace std;const int  maxn=30000+50;const int maxm=150000+50;const int INF=0x3f3f3f3f;struct Node{    int x,y;};int ans;Node e[maxm];int all,n,m,top,cnt;int s[100000],d[maxn];int vw[maxn],v[maxn];int vis[maxn],sc[maxn];int dfn[maxn],low[maxn];int scvw[maxn],dist[maxn];vector<int> g[maxn],scg[maxn];void init(){    ans=-INF;    top=all=cnt=0;    memset(s,0,sizeof(s));    memset(d,0,sizeof(d));    memset(sc,0,sizeof(sc));    memset(vis,0,sizeof(vis));    memset(dfn,0,sizeof(dfn));    memset(low,0,sizeof(low));    memset(scvw,0,sizeof(scvw));    for(int i=1; i<=n; i++) g[i].clear(),scg[i].clear();}void Tarjan(int u){    all++,dfn[u]=low[u]=all;    top++,s[top]=u,vis[u]=1;    for(int i=0; i<g[u].size(); i++)    {        int nt=g[u][i];        if(!dfn[nt])        {            Tarjan(nt);            low[u]=min(low[u],low[nt]);        }        else        {            if(vis[nt])                low[u]=min(low[u],dfn[nt]);        }    }    if(low[u]==dfn[u])    {        cnt++;        while(s[top+1]!=u)        {            sc[s[top]]=cnt;            vis[s[top]]=0;            top--;        }    }}int dfs(int u,int tmp){    int maxx=tmp;    for(int i=0;i<scg[u].size();i++)    {        int nt=scg[u][i];        maxx=max(maxx,dfs(nt,tmp+scvw[nt]));    }    return maxx;}int main(){    while(scanf("%d%d",&n,&m)!=EOF)    {        init();        for(int i=1; i<=n; i++) scanf("%d",&vw[i]);        for(int i=0; i<m; i++)        {            int x,y;            scanf("%d%d",&x,&y);            x++,y++;            e[i].x=x,e[i].y=y;            g[x].push_back(y);        }        for(int i=1; i<=n; i++)            if(!dfn[i]) Tarjan(i);        for(int i=1; i<=n; i++)        {            scvw[sc[i]]+=(vw[i]>0?vw[i]:0);            ans=max(ans,scvw[sc[i]]);        }        for(int i=0; i<m; i++)        {            int x=sc[e[i].x],y=sc[e[i].y];            if(x!=y)            {                d[y]++;                scg[x].push_back(y);            }        }        for(int i=1; i<=cnt; i++)        {            if(!d[i]) ans=max(ans,dfs(i,scvw[i]));        }        printf("%d/n",ans);    }    return 0;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久视频在线视频| 欧美日本精品在线| 亚洲国产精品高清久久久| 欧美wwwxxxx| 久久久免费高清电视剧观看| 国产精品视频在线播放| 国产精品日韩在线观看| 久久精品亚洲94久久精品| 亚洲男人天堂久| 国产日韩在线播放| 日韩禁在线播放| 国产成人一区二区三区| 亚洲一区二区三区香蕉| 亚洲精品久久久久久久久久久久| 国内精品久久久久| 国产精品扒开腿做爽爽爽视频| 国产精品普通话| 午夜精品一区二区三区在线| 亚洲精品欧美日韩| 久久天天躁夜夜躁狠狠躁2022| 日韩在线一区二区三区免费视频| 亚洲福利在线看| 亚洲福利在线看| 欧美日韩aaaa| 色妞一区二区三区| 亚洲欧美国产精品va在线观看| 一区二区三区国产在线观看| 久久精品99无色码中文字幕| 色综合色综合网色综合| 国产日韩欧美在线播放| 51色欧美片视频在线观看| 岛国av一区二区在线在线观看| 成人国产在线视频| 91亚洲精品在线| 欧美又大又硬又粗bbbbb| 色综合久久精品亚洲国产| 欧美猛少妇色xxxxx| 久久久午夜视频| 国产精品日日做人人爱| 日韩中文字幕免费看| 色综合久久天天综线观看| 亚洲成av人影院在线观看| 91在线视频精品| 国产精品视频yy9099| 98精品国产高清在线xxxx天堂| 日韩毛片在线看| 成人在线一区二区| 日韩av电影在线免费播放| 日韩av手机在线看| 亚洲偷熟乱区亚洲香蕉av| 国产欧美日韩91| 国产精品久久久久久久久久久久久| 26uuu日韩精品一区二区| 欧美激情精品久久久久久大尺度| 国产91在线播放| 国语自产偷拍精品视频偷| 国产成人在线一区| 黑人精品xxx一区一二区| 亚洲精品小视频在线观看| 欧美wwwxxxx| 精品女同一区二区三区在线播放| 国产精品爱啪在线线免费观看| 精品国内产的精品视频在线观看| 91国产视频在线| 欧美黑人性生活视频| 2020欧美日韩在线视频| 亚洲国产一区二区三区四区| 成人信息集中地欧美| 国产精品扒开腿做爽爽爽视频| 精品动漫一区二区| 亚洲午夜精品久久久久久性色| 欧美日韩国产综合视频在线观看中文| 精品一区二区三区电影| 97精品久久久中文字幕免费| 日韩精品中文字幕视频在线| 日本三级久久久| 久久久精品国产| 国产精品xxxxx| 久久视频在线直播| 91精品久久久久久久久| 欧美激情久久久久久| 国产精品mp4| 国产视频自拍一区| 91久久精品国产| 国产一区二区美女视频| 亚洲视频日韩精品| 97碰碰碰免费色视频| 欧美精品福利视频| 亚洲成**性毛茸茸| 久久久这里只有精品视频| 日韩禁在线播放| 国语自产精品视频在线看| 91国产视频在线播放| 色综合久久88色综合天天看泰| 在线播放日韩欧美| 91sao在线观看国产| 伊是香蕉大人久久| 自拍亚洲一区欧美另类| 亚洲男人第一av网站| 成人免费xxxxx在线观看| 国产精品网站入口| 精品免费在线观看| 色婷婷综合成人av| 91久久久久久久久久| 欧美激情一区二区三区在线视频观看| 日本免费一区二区三区视频观看| 91po在线观看91精品国产性色| 亚洲国产欧美在线成人app| 疯狂蹂躏欧美一区二区精品| 欧美大片网站在线观看| 国产精品免费视频久久久| 久久久欧美精品| 日本亚洲欧美成人| 色播久久人人爽人人爽人人片视av| 国产一区二区三区欧美| 国产日韩精品一区二区| 日韩精品中文字幕在线| 亚洲精品欧美极品| 亚洲男人第一av网站| 亚洲国产精品成人精品| 国产精品老女人精品视频| 日本精品久久久久久久| 欧美尺度大的性做爰视频| 欧美人与性动交a欧美精品| 亚洲午夜国产成人av电影男同| 亚洲国产成人精品久久| 懂色av中文一区二区三区天美| 日韩一区在线视频| 在线a欧美视频| 欧美成人午夜免费视在线看片| 国产精品白丝jk喷水视频一区| 92裸体在线视频网站| 亚洲色图综合网| 亚洲亚裔videos黑人hd| 好吊成人免视频| 久久精品国产一区| 久久久久久久久国产精品| 亚洲自拍偷拍福利| 国产精品综合网站| 亚洲成人a级网| 欧美精品久久久久a| 亚洲a∨日韩av高清在线观看| 精品国产一区二区三区久久狼5月| 日本一区二区在线播放| 久久久久久久激情视频| 亚洲欧美成人一区二区在线电影| 91麻豆国产语对白在线观看| 国产一区二区三区视频免费| 日韩一区二区三区国产| 在线亚洲欧美视频| 欧美日韩国产成人高清视频| 成人免费直播live| 91精品中文在线| 91av成人在线| 中日韩美女免费视频网站在线观看| 国产综合久久久久久| 中文字幕久热精品在线视频| 欧美在线视频a| 国产精品精品国产| 色妞色视频一区二区三区四区| 欧美尤物巨大精品爽| 久久久视频在线| 91九色国产社区在线观看| 夜夜嗨av色一区二区不卡|