玄学
查看原帖
玄学
360140
QWXSDL楼主2023/10/13 15:41
#include<bits/stdc++.h>
using namespace std;
int n,k,m,s,t,minn=INT_MAX;
int kk[200][200],c[200],u[10010],v[10010],d[10010],f[10100];
void dfs(int s1,int sum){
    if(s1==t){
        minn=min(minn,sum);
        return ;
    }
    if(sum>=minn) return ;
    for(int i=1;i<=m;i++){
        if(s1==u[i]&&f[v[i]]==-1&&kk[v[i]][u[i]]==0){
            f[s1]==0;
            dfs(v[i],sum+d[i]);
            f[s1]=-1;
        }
    }
}
int main(){
    cin>>n>>k>>m>>t>>s;
    memset(f,-1,sizeof(f));
    for(int i=1;i<=n;i++)cin>>c[i];
    for(int i=1;i<=k;i++){
        for(int j=1;j<=k;j++){
            cin>>kk[i][j];
        }
    }
    for(int i=1;i<=m;i++){
        cin>>u[i]>>v[i]>>d[i];

    }
    dfs(s,0);
    if(minn==INT_MAX)cout<<"-1";
    else cout<<minn;
    return 0;
}
2023/10/13 15:41
加载中...