编程语言
首页 > 编程语言> > 团体程序设计天梯赛(L2-036 网红点打卡攻略 (25 分))

团体程序设计天梯赛(L2-036 网红点打卡攻略 (25 分))

作者:互联网

题目:

思路分析:

这道题踩了一堆坑 30min调bug才满分!

1.用set检验是否每个只过去一次 不能直接判断是否==n 可能去过多次

2.发现不符合题意我直接就continue了!致命伤 

代码实现:

/*
*@Author:   GuoJinlong
*@Language: C++
*/
//#include <bits/stdc++.h>
/*
 *                                                     __----~~~~~~~~~~~------___
 *                                    .  .   ~~//====......          __--~ ~~
 *                    -.            \_|//     |||\\  ~~~~~~::::... /~
 *                 ___-==_       _-~o~  \/    |||  \\            _/~~-
 *         __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
 *     _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
 *   .~       .~       |   \\ -_    /  /-   /   ||      \   /
 *  /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
 *  |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
 *           '         ~-|      /|    |-~\~~       __--~~
 *                       |-~~-_/ |    |   ~\_   _-~            /\
 *                            /  \     \__   \/~                \__
 *                        _--~ _/ | .-~~____--~-/                  ~~==.
 *                       ((->/~   '.|||' -_|    ~~-/ ,              . _||
 *                                  -_     ~\      ~~---l__i__i__i--~~_/
 *                                  _-~-__   ~)  \--______________--~~
 *                                //.-~~~-~_--~- |-------~~~~~~~~
 *                                       //.-~~~--\
 *                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 *
 *                               神兽保佑            永无BUG
 */

const int MAX=210;
ll cost[MAX][MAX];
ll a[MAX];
set<int>st;
set<int>st1;
int main(){
    int n,m;
    ll num=0;
    cin>>n>>m;
    mms(cost,0);
    while (m--) {
        int a,b,c;
        cin>>a>>b>>c;
        cost[a][b]=c;
        cost[b][a]=c;
    }

    int k;
    cin>>k;
    ll aans=INF;
    int id;
    
    for(int i=1;i<=k;i++){
        int N;
        cin>>N;
        st.clear();
//        cout<<i<<" N "<<N<<endl;
        for(int j=1;j<=N;j++){
            cin>>a[j];
            st.insert(a[j]);
        }
        if(N!=n){
//            cout<<"个数不满足"<<i<<" "<<"继续"<<endl;
            continue;
        }
        int q=cost[0][a[1]];
//        cout<<"0-"<<a[1]<<" "<<q<<endl;
        int z=cost[a[n]][0];
//        cout<<a[n]<<"-0"<<" "<<z<<endl;
        if(q==0||z==0) {
//            cout<<"起点终点不满足"<<i<<" "<<"继续"<<endl;
//            cout<<"qi"<<" "<<q<<endl;
//            cout<<"z "<<z<<endl;
            continue;
        }
        int flag=1;
        int ans=0;
        ans+=(q+z);
        for(int j=1;j<=n-1;j++){
            if(cost[a[j]][a[j+1]]==0){
                flag=0;
            }
            else{
                ans+=cost[a[j]][a[j+1]];
            }
               
        }
        if(flag&&st.size()==n) {
            num++;
            if(aans>ans){
                aans=ans;
                id=i;
            }
        }
//        cout<<i<<" "<<ans<<endl;
        
    }
    cout<<num<<endl;
    cout<<id<<" "<<aans<<endl;
}

标签:__,25,int,网红点,--,_-,MAX,打卡,-_
来源: https://blog.csdn.net/m0_57006708/article/details/121144404