zoukankan      html  css  js  c++  java
  • 1150 Travelling Salesman Problem (25 分)

    水~。

    const int N=210;
    int g[N][N];
    int n,m,q;
    
    int main()
    {
        cin>>n>>m;
    
        memset(g,0x3f,sizeof g);
        while(m--)
        {
            int a,b,c;
            cin>>a>>b>>c;
            g[a][b]=g[b][a]=c;
        }
    
        cin>>q;
        int kase=1;
        int minidx=0,mindist=INF;
        while(q--)
        {
            int k;
            cin>>k;
            vector<int> v(k);
            set<int> node;
            for(int i=0;i<k;i++)
            {
                cin>>v[i];
                node.insert(v[i]);
            }
    
            bool ok=true;
            int res=0;
            for(int i=0;i<k-1;i++)
            {
                int a=v[i],b=v[i+1];
                if(g[a][b] == INF)
                {
                    ok=false;
                    break;
                }
                res+=g[a][b];
            }
    
            string desc;
            if(!ok) desc="Not a TS cycle";
            else if(v[0] != v[k-1] || node.size() < n) desc="Not a TS cycle";
            else if(k != n+1) desc="TS cycle";
            else desc="TS simple cycle";
    
            if(!ok)
                printf("Path %d: NA (%s)
    ",kase++,desc.c_str());
            else
            {
                if(desc != "Not a TS cycle" && res < mindist)
                {
                    mindist=res;
                    minidx=kase;
                }
                printf("Path %d: %d (%s)
    ",kase++,res,desc.c_str());
            }
        }
    
        printf("Shortest Dist(%d) = %d
    ",minidx,mindist);
    
        //system("pause");
        return 0;
    }
    
  • 相关阅读:
    SDOI2018 旧试题
    JSOI2004 平衡点 / 吊打XXX
    SDOI2017 数字表格
    CQOI2015 选数
    BZOJ2741 【FOTILE模拟赛】L
    BZOJ4103 [Thu Summer Camp 2015]异或运算
    BZOJ3689 异或之
    BZOJ4128 Matrix
    HNOI2006 最短母串问题
    SCOI2013 密码
  • 原文地址:https://www.cnblogs.com/fxh0707/p/14487805.html
Copyright © 2011-2022 走看看