【1150】Travelling Salesman Problem (25分)【图论】

简介: 【1150】Travelling Salesman Problem (25分)【图论】【1150】Travelling Salesman Problem (25分)【图论】
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<algorithm>  
#include<map>
#include<vector>
#include<queue> 
#include<string>
#include<set>
using namespace std;  
//注意输出最后一句的空格格式
int e[300][300],n,m,k,ans=99999999,ansid;
vector<int>v;
void check(int index){
  int sum=0,cnt,flag=1;
  scanf("%d",&cnt);//这条路径走的城市数cnt
  set<int>s;
  vector<int>v(cnt);
  for(int i=0;i<cnt;i++){
    scanf("%d",&v[i]);//存入查询的一条路径
    s.insert(v[i]);
  }
  for(int i=0;i<cnt-1;i++){
    if(e[v[i]][v[i+1]]==0)  flag=0;
    //有相邻两点不可达则标记
    sum+=e[v[i]][v[i+1]];
  }
  if(flag==0)
    printf("Path %d: NA (Not a TS cycle)\n",index);
  else if(v[0]!=v[cnt-1]||s.size()!=n)//点不够或首尾点不同
    printf("Path %d: %d (Not a TS cycle)\n",index,sum);
  else if(cnt!=n+1){//注意回到原点(初末点记2次)
    printf("Path %d: %d (TS cycle)\n",index,sum);
    if(sum<ans){
      ans=sum;//更新成功解min
      ansid=index;
    }
  }else{//剩下是最难搞的“简单圆”
    printf("Path %d: %d (TS simple cycle)\n",index,sum);
    if(sum<ans){
      ans=sum;//更新成功解min
      ansid=index;
    }
  }
}
int main(){
  scanf("%d%d",&n,&m);//n个城市,m条边
  for(int i=0;i<m;i++){
    int t1,t2,t;
    scanf("%d%d%d",&t1,&t2,&t);//t1到t2距离为t
    e[t1][t2]=e[t2][t1]=t;
  }
  scanf("%d",&k);//查询k次
  for(int i=1;i<=k;i++)  check(i);
  printf("Shortest Dist(%d) = %d\n",ansid,ans);
  system("pause");
  return 0;
}
相关文章
|
机器学习/深度学习 人工智能 算法
CF1446D Frequency Problem(思维 前缀和 根号分治 双指针)
CF1446D Frequency Problem(思维 前缀和 根号分治 双指针)
64 0
|
5G
[NCPC2021] Antenna Analysis | 思维递推
题目描述 Åke has heard that there may be some suspicious 5G radiation in his city. To test this, he uses the antenna on his roof to measure the 5G level each day. However, he does not know how he should analyze the data.
192 0
|
Go
[2018 徐州 网络赛|Hard to prepare ] 环形染色问题的公式解法
Input Output 样例输入复制 样例输出复制 题目来源 方法1: 方法2:
78 0
[2018 徐州 网络赛|Hard to prepare ] 环形染色问题的公式解法
|
Java C++
HDU-1005,Number Sequence(有规律的数学题)
HDU-1005,Number Sequence(有规律的数学题)
POJ-2492,A Bug's Life(分类并查集)
POJ-2492,A Bug's Life(分类并查集)
|
物联网 Go C++
洛谷【2】P1001 A+B Problem
洛谷【2】P1001 A+B Problem
【1122】Hamiltonian Cycle (25分)【图论】
【1122】Hamiltonian Cycle (25分)【图论】 【1122】Hamiltonian Cycle (25分)【图论】
92 0
|
算法 定位技术 双11
【基础算法】关于图论中最小生成树(Minimum Spanning Tree)那些不可告人的秘密(一)
【基础算法】关于图论中最小生成树(Minimum Spanning Tree)那些不可告人的秘密
188 0
【基础算法】关于图论中最小生成树(Minimum Spanning Tree)那些不可告人的秘密(一)
|
算法 数据建模 计算机视觉
【基础算法】关于图论中最小生成树(Minimum Spanning Tree)那些不可告人的秘密(二)
【基础算法】关于图论中最小生成树(Minimum Spanning Tree)那些不可告人的秘密
104 0
【基础算法】关于图论中最小生成树(Minimum Spanning Tree)那些不可告人的秘密(二)
|
算法
【基础算法】关于图论中最小生成树(Minimum Spanning Tree)那些不可告人的秘密(三)
【基础算法】关于图论中最小生成树(Minimum Spanning Tree)那些不可告人的秘密
105 0
【基础算法】关于图论中最小生成树(Minimum Spanning Tree)那些不可告人的秘密(三)