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

    一、技术总结

    1. 这一题是考查旅行商问题,但不是传统意义上的遍历图,然后找最短路径之类的;
    2. 首先应该明确有四类,一类是不能够走通的,也就是在所给路径中,有相邻的两点存在不通的情况;
    3. 再就是所给路径走得通,但是不是旅行商问题,也就是第一个城市与最后一个城市不是同一个或者没有走完所有的城市;
    4. 然后就是旅行商问题,但是不是最简旅行商问题,即走过所有城市,并且开始和最后是同一个城市,但是有些城市走过不止一遍;
    5. 最后就是最简旅行商问题了,每个城市走一遍,然后开始和结尾是同一个城市;
    6. 题目要求,我们最后一行输出时旅行商路径的中输出距离最短的,也就是在45中考虑。
    7. 最后按要求输出即可

    二、参考代码

    #include<iostream>
    #include<set>
    #include<vector>
    using namespace std;
    int e[300][300], n, m, k, ans = 9999999, ansid;
    vector<int> v;
    void check(int index){
    	int sum = 0, cnt, flag = 1;
    	scanf("%d", &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)
    ", index);
    	}else if(v[0] != v[cnt - 1] || s.size() != n){
    		printf("Path %d: %d (Not a TS cycle)
    ", index, sum);
    	}else if(cnt != n + 1){
    		printf("Path %d: %d (TS cycle)
    ", index, sum);
    		if(sum < ans){
    			ans = sum;
    			ansid = index;
    		}
    	}else{
    		printf("Path %d: %d (TS simple cycle)
    ", index, sum);
    		if(sum < ans){
    			ans = sum;
    			ansid = index;
    		}
    	}
    }
    int main(){
    	scanf("%d%d", &n, &m);
    	for(int i = 0; i < m; i++){
    		int t1, t2, t;
    		scanf("%d%d%d", &t1, &t2, &t);
    		e[t1][t2] = e[t2][t1] = t;
    	}
    	scanf("%d", &k);
    	for(int i = 1; i <= k; i++){
    		check(i);
    	}
    	printf("Shortest Dist(%d) = %d
    ", ansid, ans);
    	return 0;
    }
    
  • 相关阅读:
    IIS6.0应用程序池回收和工作进程
    SQL Server 中的 bit 类型的使用
    VS2008 SP1简体中文版下载与.Net Framework 3.5 SP1简体中文版下载
    C#技术教程:http://www.cftea.com/docs/asp.net/csharp/
    C#中得到程序当前工作目录和执行目录的一些方法
    C#中 ? 运算符 和 ??运算符
    dhl:页面中调用 通过类返回SqlDataReader类型的对象
    C# 枚举(enum)-设计
    CnBlogs博文排版技巧 写博文了~~
    金山快译2007版
  • 原文地址:https://www.cnblogs.com/tsruixi/p/13184723.html
Copyright © 2011-2022 走看看