• 旅行商问题(tsp)之分支定界法


    http://soj.sysu.edu.cn/show_problem.php?pid=1001&cid=1816

    做了一个晚上的题,真是弱爆了...

    其实就是深搜最短路,不过加了一个upper bound用来剪枝,因为数据比较小可以过!

    深搜还是要熟悉啊!

     1 #include <bits/stdc++.h>
     2 
     3 using namespace std;
     4 
     5 double graph[25][25];
     6 int vis[25];
     7 double a[25];
     8 double ub;
     9 double ans;
    10 
    11 
    12 struct point {
    13     int x;
    14     int y;
    15 }p[25];
    16 
    17 double dis(point a, point b)
    18 {
    19     return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
    20 }
    21 
    22 void dfs(int n, int x, double temp, int cnt)
    23 {
    24 //    printf("%.2lf
    ", temp);
    25     if(cnt == n-2)
    26     {
    27         ub = min(ub, temp+graph[x][n-1]);
    28         return ;
    29     }
    30     vis[x]=1;
    31     for(int i=0; i<n-1; i++)
    32     {
    33         if(graph[x][i] && !vis[i])
    34         {
    35             temp += graph[x][i];
    36             if(temp < ub)
    37                 dfs(n, i, temp, cnt+1);    
    38             temp -= graph[x][i];
    39             vis[i]=0;    
    40                     
    41         }
    42     }
    43     
    44 
    45 }
    46 
    47 
    48 int main()
    49 {
    50     int t, n, x, y;
    51     scanf("%d", &t);
    52     while(t--)
    53     {
    54         int cnt=0;
    55         ub=0x3f3f3f3f;
    56         double temp=0;
    57         memset(graph, 0, sizeof(graph));
    58         memset(vis, 0, sizeof(vis));
    59         
    60         scanf("%d", &n);
    61         for(int i=0; i<n; i++)
    62             scanf("%d%d", &p[i].x, &p[i].y);
    63 
    64         for(int i=0; i<n; i++)
    65             for(int j=0; j<n; j++)
    66                 graph[i][j] = dis(p[i], p[j]);    
    67                         
    68         vis[0]=1;
    69         dfs(n,0,temp,0);
    70         printf("%.2lf
    ", ub);
    71     }
    72     return 0;
    73 } 
  • 相关阅读:
    定位--position属性
    浮动
    超链接伪类
    对齐方式
    字体样式
    标准文档流
    CSS
    表单
    框架
    内部类
  • 原文地址:https://www.cnblogs.com/dominjune/p/4500208.html
Copyright © 2020-2023  润新知