ABC183 C – Travel

2023.3.19 AM 10:20 by CBJ

排列枚舉

//C++ language

#include<iostream>
#include<vector>
#include<algorithm> //next_permutation() 
#include<numeric> //iota()
using namespace std;
int main(){
    int n,k; cin>>n>>k;
    int cost[10][10];
    for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) cin>>cost[i][j];
    vector<int>a(n); iota(a.begin(),a.end(),1);
    int ans=0;
    do{
        if(a[0]>1) break;
        int cnt=cost[a[n-1]][1];
        for(int i=1;i<n;i++) cnt+=cost[a[i]][a[i-1]];
        if(cnt==k) ans++;
    }while(next_permutation(a.begin(),a.end()));
    cout<<ans<<"\n";
    return 0;
}

相關文章

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *