• <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>

            O(1) 的小樂

            Job Hunting

            公告

            記錄我的生活和工作。。。
            <2012年11月>
            28293031123
            45678910
            11121314151617
            18192021222324
            2526272829301
            2345678

            統(tǒng)計(jì)

            • 隨筆 - 182
            • 文章 - 1
            • 評(píng)論 - 41
            • 引用 - 0

            留言簿(10)

            隨筆分類(70)

            隨筆檔案(182)

            文章檔案(1)

            如影隨形

            搜索

            •  

            最新隨筆

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            Timus 1078 最長路Floyd

            可以把問題轉(zhuǎn)換為一個(gè)有向圖中求最長路的過程,需要Floyd算法來打印最長路。保存即可。

            http://acm.timus.ru/problem.aspx?space=1&num=1078

             

               1:   
               2:  #include <queue>
               3:  #include <iostream>
               4:  #include <string.h>
               5:  #include <stdio.h>
               6:  using namespace std;
               7:  #define V 505      // vertex
               8:  #define INF 0x3F3F3F3F
               9:  int N; 
              10:  int dis[V][V];
              11:  int path[V][V];
              12:   
              13:  // normal distance.
              14:  void floyd()
              15:  {
              16:      for(int k=1;k<=N;k++)
              17:      {
              18:          for(int i=1;i<=N;i++)
              19:          {
              20:              for(int j=1;j<=N;j++)
              21:              {
              22:                  if(dis[i][k]== -INF || dis[k][j] == -INF) continue;
              23:                  if(dis[i][k] + dis[k][j] > dis[i][j])
              24:                  {
              25:                      dis[i][j] = dis[i][k] + dis[k][j];
              26:                      path[i][j] = path[i][k];
              27:                  }
              28:   
              29:              }
              30:          }
              31:      }
              32:  }
              33:  void floyd_path(int i, int j)
              34:  {
              35:      int k=path[i][j];
              36:      while(k!=j)
              37:      {
              38:          printf(" %d", k );
              39:          k= path[k][j];
              40:      }
              41:  }
              42:   
              43:  int main()
              44:  {
              45:      //freopen("1078.txt","r",stdin);
              46:      scanf("%d", &N);
              47:      int a, b;
              48:      vector<pair<int, int> > C;
              49:      memset(dis, 0 ,sizeof(dis));
              50:      for(int i=0; i<N; i++)
              51:      {
              52:          scanf("%d%d", &a, &b);
              53:          C.push_back(make_pair(a,b));
              54:          for(int i=0; i<C.size(); i++)
              55:          {
              56:              if(a<C[i].first && b> C[i].second)
              57:              {
              58:                  dis[i+1][C.size()] = 1;
              59:                  path[i+1][C.size()] = C.size();
              60:              }
              61:              else if(a> C[i].first && b< C[i].second)
              62:              {
              63:                  dis[C.size()][i+1]=1;
              64:                  path[C.size()][i+1] = i+1;
              65:              }
              66:          }
              67:      }
              68:      for(int i=1; i<=N; i++) for(int j=1; j<=N; j++) if(dis[i][j]==0) dis[i][j]=-INF;
              69:      floyd();
              70:      int ret = 0;
              71:      for(int i=1; i<=N; i++)
              72:      {
              73:          for(int j=1; j<=N; j++)
              74:          {
              75:              if(dis[i][j] > ret)
              76:              {
              77:                  ret = dis[i][j];
              78:                  a = i; b = j;
              79:              }
              80:          }
              81:      }
              82:      if(ret == 0) 
              83:      {
              84:          cout<<1<<endl;
              85:          cout<<1<<endl;
              86:      }else
              87:      {
              88:          cout<<ret+1<<endl;
              89:          cout<<a;
              90:          floyd_path(a,b);
              91:          cout<<" "<<b<<endl;
              92:      }
              93:      return 0;
              94:  }
              95:   

            posted on 2012-11-10 12:50 Sosi 閱讀(527) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Algorithm

            統(tǒng)計(jì)系統(tǒng)
            久久久久精品国产亚洲AV无码| 伊人久久大香线蕉综合影院首页| 国产精品99久久久精品无码| 久久久久人妻一区精品果冻| 91精品国产高清久久久久久国产嫩草| 久久综合香蕉国产蜜臀AV| 亚洲综合熟女久久久30p| 久久这里只有精品首页| 国内精品人妻无码久久久影院导航| 久久亚洲电影| 久久免费视频1| 亚洲精品无码久久久影院相关影片| 久久精品国产乱子伦| 亚洲AV日韩AV永久无码久久| 久久精品亚洲一区二区三区浴池| 色偷偷偷久久伊人大杳蕉| 久久久久无码精品国产| 久久精品视频免费| 久久精品亚洲乱码伦伦中文| 青青久久精品国产免费看 | 久久青青草原精品国产软件| 精品久久人人爽天天玩人人妻 | 狠狠色婷婷久久一区二区| 少妇精品久久久一区二区三区| 久久精品夜夜夜夜夜久久| 久久本道伊人久久| 久久久久亚洲?V成人无码| 99久久国产宗和精品1上映| 久久亚洲AV成人出白浆无码国产 | 狠狠久久亚洲欧美专区 | 欧美午夜A∨大片久久 | 99久久精品九九亚洲精品| 久久亚洲国产精品五月天婷| 狠狠色综合网站久久久久久久高清| 久久久亚洲欧洲日产国码二区 | 久久av免费天堂小草播放| 精品国产日韩久久亚洲| 久久精品国产亚洲一区二区| 亚洲人成无码久久电影网站| 精品国产91久久久久久久| 无码人妻久久一区二区三区蜜桃|