• <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>
            posts - 74,  comments - 33,  trackbacks - 0
            第一次考慮到輸出路徑點(diǎn)。。。。。
            開(kāi)始的時(shí)候本以為不用拓?fù)洌谝?jiàn)圖的時(shí)候全部建成無(wú)向圖。。。。結(jié)果不言而喻
            部分代碼如下:
            #include<iostream>
            #include
            <stack>
            #include
            <vector>
            #define?MAXN?2100
            using?namespace?std;
            vector
            <int>v[MAXN],nv[MAXN],cont[MAXN];
            int?pre[MAXN],low[MAXN],id[MAXN];
            int?ans[MAXN],dfn[MAXN];
            int?cnt,scnt,n,m,N;
            stack
            <int>ST;
            struct?NODE{
            ????
            int?x,y;????
            }
            arr[MAXN];
            void?Tarjan(int?x){
            ????
            int?t,i;
            ????
            int?min=low[x]=pre[x]=cnt++;
            ????ST.push(x);
            ????
            for(i=0;i<v[x].size();i++){
            ????????t
            =v[x][i];
            ????????
            if(pre[t]==-1)Tarjan(t);
            ????????
            if(low[t]<min)min=low[t];
            ????}

            ????
            if(min<low[x]){
            ????????low[x]
            =min;
            ????????
            return;
            ????}

            ????
            do{
            ????????id[t
            =ST.top()]=scnt;
            ????????low[t]
            =m;ST.pop();
            ????}
            while(t!=x);
            ????scnt
            ++;
            }

            int?SCC(){
            ????scnt
            =cnt=0;
            ????
            while(!ST.empty())ST.pop();
            ????memset(pre,
            0xff,sizeof(pre));
            ????memset(low,
            0,sizeof(low));
            ????
            for(int?i=0;i<m;i++)
            ????????
            if(pre[i]==-1)Tarjan(i);
            ????
            for(int?i=0;i<m;i++)
            ????????cont[id[i]].push_back(i);
            ????
            return?scnt;
            }

            void?DFS(int?k){
            ????dfn[k]
            =cnt++;
            ????
            for(int?i=0;i<nv[k].size();i++){
            ????????
            int?w=nv[k][i];
            ????????
            if(dfn[w]==-1)DFS(w);?
            ????}
            ??
            ????ans[scnt
            ++]=k;?????????????
            }

            void?ColDFS(int?k){
            ????dfn[k]
            =2;
            ????
            for(int?i=0;i<nv[k].size();i++){
            ????????
            int?w=nv[k][i];
            ????????
            if(dfn[w]==-1)ColDFS(w);
            ????}
            ??????????
            }

            void?GetOneAnswer(){
            ????memset(dfn,
            0xff,sizeof(dfn));
            ????
            for(int?i=0;i<m;i++)
            ????????
            for(int?j=0;j<v[i].size();j++){
            ????????????
            int?x=id[i],y=id[v[i][j]];
            ????????????
            if(x!=y)nv[x].push_back(y);????
            ????????}

            ????cnt
            =scnt=0;
            ????
            for(int?i=0;i<N;i++)
            ????????
            if(dfn[i]==-1)DFS(i);
            ????memset(dfn,
            0xff,sizeof(dfn));
            ????
            for(int?i=scnt-1;i>=0;i--)
            ????????
            if(dfn[ans[i]]==-1)?{
            ????????????
            int?a=cont[ans[i]][0],b;?
            ????????????
            if(a<n)b=a+n;
            ????????????
            else?b=a-n;
            ????????????dfn[ans[i]]
            =1;
            ????????????
            if?(dfn[id[b]]==-1)ColDFS(id[b]);?
            ????????}

            }

            void?PRINTF(){
            ????printf(
            "YES\n");
            ????GetOneAnswer();
            ????
            for(int?i=0;i<n;i++){
            ????????
            int?x=arr[i].x,y=arr[i].y;
            ????????
            int?tx=arr[i+n].x,ty=arr[i+n].y;
            ????????
            if(dfn[id[i]]==2)printf("%02d:%02d?%02d:%02d\n",x/60,x%60,y/60,y%60);
            ????????
            else?printf("%02d:%02d?%02d:%02d\n",tx/60,tx%60,ty/60,ty%60);
            ????}
            ????
            }

            void?solve(){
            ????
            int?i=0;
            ????
            for(N=SCC();i<n;i++)
            ????????
            if(id[i]==id[n+i])break;
            ????
            if(i==n)PRINTF();
            ????
            else?printf("NO\n");????
            }
            posted on 2009-06-07 10:39 KNIGHT 閱讀(502) 評(píng)論(0)  編輯 收藏 引用

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


            <2009年6月>
            31123456
            78910111213
            14151617181920
            21222324252627
            2829301234
            567891011

            常用鏈接

            留言簿(8)

            隨筆檔案

            文章檔案

            Friends

            OJ

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            久久久久久久97| 亚洲国产成人久久精品影视| 久久久久亚洲av成人无码电影| 99精品伊人久久久大香线蕉| 91久久国产视频| 开心久久婷婷综合中文字幕| 一本久久知道综合久久| 精品蜜臀久久久久99网站| 伊人热人久久中文字幕| 亚州日韩精品专区久久久| 熟妇人妻久久中文字幕| 狠狠色噜噜狠狠狠狠狠色综合久久| 国产精品99久久久久久宅男| 亚洲伊人久久综合中文成人网| 欧美午夜精品久久久久免费视 | 国产毛片久久久久久国产毛片 | 一本一本久久aa综合精品 | 久久久久无码精品国产| 久久久久久国产精品美女| 久久人人妻人人爽人人爽| 久久亚洲国产成人精品无码区| 久久精品亚洲日本波多野结衣| 欧美日韩精品久久久免费观看| 日本欧美久久久久免费播放网| 久久久噜噜噜久久| 91久久精品电影| 久久精品免费一区二区三区| 久久久久久午夜成人影院| 国产69精品久久久久APP下载| 国产AⅤ精品一区二区三区久久 | 亚洲综合熟女久久久30p| 久久精品国产精品亜洲毛片 | 伊人久久亚洲综合影院| 国产激情久久久久影院| 精品久久久久久无码专区| 伊人久久大香线焦AV综合影院| 一本色道久久88综合日韩精品| 日本精品一区二区久久久| 热久久国产欧美一区二区精品| 国产午夜福利精品久久| 久久国产精品免费一区二区三区 |