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;
    }
    
  • 相关阅读:
    python入门(3)净化雷锋网网页内容
    Ecos3.0 Spi Driver for Leon3
    梦断代码1了解你的编译器和IDE
    诚聘高级测试工程师(北京职位)
    高级PHP开发工程师、高级前端开发工程师(北京职位)
    MySQL DBA (北京职位)
    赴百度 Web前端工程师 三个职位
    new与malloc的区别
    Google C++编程风格指南
    MFC的picture控件 静态加载与动态加载
  • 原文地址:https://www.cnblogs.com/tsruixi/p/13184723.html
Copyright © 2011-2022 走看看