zoukankan      html  css  js  c++  java
  • 洛谷 P1690 贪婪的Copy

    题目描述

    Copy从卢牛那里听说在一片叫yz的神的领域埋藏着不少宝藏,于是Copy来到了这个被划分为个区域的神地。卢牛告诉了Copy这里共有个宝藏,分别放在第Pi个(1<=Pi<=N)区域。Copy还得知了每个区域之间的距离。现在Copy从1号区域出发,要获得所有的宝藏并到n号区域离开。Copy很懒,只好来找你为他寻找一条合适的线路,使得他走过的距离最短。

    输入输出格式

    输入格式:

     

    第一行一个正整数N(1<=N<=100)

    接下来一个N*N的矩阵,第i+1行第j列的数字表示区域i,j之间的距离。每个距离用空格隔开,距离保证i,j<=1000。请注意的i to j距离并不一定等于j to i的距离。

    第N+2行一个整数P(0<=P<=10)。

    第N+3行共P个用空格隔开的整数,表示有宝藏的区域编号。

     

    输出格式:

     

    一个整数,为Copy获得全部宝藏需要的最短距离。数据保证答案小于等于maxlongint。

     

    输入输出样例

    输入样例#1:
    样例输入1
    2
    0 4
    5 0
    2
    1 2
    
    样例输入2
    3
    0 2 6
    1 0 4
    7 10 0
    1
    2
    输出样例#1:
    样例输出1
    4
    
    样例输出1
    6

    说明

    对30%的数据,1<=n<=15,其余如题所述。

    对100%的数据,全部数据范围如题所述。

    思路:floyd预处理+dfs

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define MAXN 101
    using namespace std;
    int n,m;
    int vis[MAXN],have[MAXN];
    long long ans=0x7f7f7f7f;
    long long map[MAXN][MAXN];
    void dfs(long long num,int tot,int pre){
        if(num+map[pre][n]>ans)    return ;
        if(tot==m){
            ans=num+map[pre][n];
            return ;
        }
        for(int i=1;i<=m;i++)
            if(!vis[i]){
                vis[i]=1;
                dfs(num+map[pre][have[i]],tot+1,have[i]);
                vis[i]=0;
            }
    }
    int main(){
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                scanf("%lld",&map[i][j]);
        for(int k=1;k<=n;k++)
            for(int i=1;i<=n;i++)
                for(int j=1;j<=n;j++)
                    if(i!=j&&i!=k&&map[i][j]>map[i][k]+map[k][j])
                        map[i][j]=map[i][k]+map[k][j];
        scanf("%d",&m);
        for(int i=1;i<=m;i++)
            scanf("%d",&have[i]);
        dfs(0,0,1);
        cout<<ans;
    }
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    keeprunning1的使用说明
    团队冲刺第十五天
    团队冲刺第十四天
    团队第一阶段冲刺评价
    团队第一阶段成果展示
    团队冲刺第十三天
    团队冲刺第十二天
    团队冲刺第十一天
    团队冲刺第十天
    团队冲刺第九天
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7609410.html
Copyright © 2011-2022 走看看