zoukankan      html  css  js  c++  java
  • A1150 Travelling Salesman Problem [模拟图]

    在这里插入图片描述

    #include<iostream>
    #include<vector>
    #include<map>
    #include<string>
    #include<cstring>
    #include<cstdio>
    #include<algorithm>
    #include<set>
    #include<queue>
    #include<unordered_map>
    #include<cmath>
    using namespace std;
    int G[201][201], ans = 99999999, endi;
    int main()
    {
    	int n, m, t1, t2, t;
    	cin >> n >> m;
    	for (int i = 0; i < m; i++)
    	{
    		cin >> t1 >> t2 >> t;
    		G[t1][t2] = t;
    		G[t2][t1] = t;
    	}
    	int q,p;
    	cin >> q; vector<int>v;
    	for (int i=1; i <= q; i++)
    	{
    		cin >> p;
    		int flag = 1, sum = 0; v.clear();
    		set<int>s;
    		for (int j = 0; j < p; j++)
    		{
    			cin >> t;
    			v.push_back(t);
    			s.insert(v[j]);
    		}
    		for (int j = 0; j < p - 1; j++)
    		{
    			if (G[v[j]][v[j + 1]] == 0)
    				flag = 0;
    			sum += G[v[j]][v[j + 1]];
    		}
    		if (flag == 0)
    		{
    			printf("Path %d: NA (Not a TS cycle)
    ", i);
    		}
    		else if (v[0] != v[p - 1] || s.size() != n)
    		{
    			printf("Path %d: %d (Not a TS cycle)
    ", i,sum);
    		}
    		else if (p != n + 1)
    		{
    			printf("Path %d: %d (TS cycle)
    ", i, sum);
    			if (sum < ans)
    			{
    				ans = sum;
    				endi = i;
    			}
    		}
    		else
    		{
    			printf("Path %d: %d (TS simple cycle)
    ", i, sum);
    			if (sum < ans) {
    				ans = sum;
    				endi = i;
    			}
    		}
    	}
    	printf("Shortest Dist(%d) = %d
    ", endi, ans);
    	return 0;
    }
    
  • 相关阅读:
    NETCore下IConfiguration和IOptions的用法
    关于将vs项目推到GitHub上遇到的问题
    SQL GROUP BY对多个字段进行分组
    sql if else 语句
    CSS
    CSS
    JS
    22 ~ express ~ 内容评论实现
    css ~ a标签占满父级元素
    21 ~ express ~ 内容详情展示 和 阅读数处理
  • 原文地址:https://www.cnblogs.com/Hsiung123/p/13811948.html
Copyright © 2011-2022 走看看