为什么80分大佬求调,玄关
查看原帖
为什么80分大佬求调,玄关
957300
eason2025楼主2023/5/16 18:52
#include<bits/stdc++.h>
using namespace std;
int a[200][200],b[200][200],c[200],n,k,m,s,t,u,v,d;
int main()
{
    for(int register i=1;i<=120;++i)
    	for(int register j=1;j<=120;++j)
    		a[i][j]=21474848;
	cin>>n>>k>>m>>s>>t;
    for(int register i=1;i<=n;++i)
    	cin>>c[i];
    for(int register i=1;i<=k;++i)
    	for(int register j=1;j<=k;++j)
        	cin>>b[i][j];
    for(int register i=1;i<=m;++i)
    {
        cin>>u>>v>>d;
        if(b[c[v]][c[u]]==0)
			a[u][v]=min(a[u][v],d);
    	if(b[c[u]][c[v]]==0)
			a[v][u]=min(a[v][u],d);
    }
    for(int register k=1;k<=n;++k)
    	for(int register i=1;i<=n;++i)
    		for(int register j=1;j<=n;++j)
    			if(b[c[k]][c[i]]==0 && b[c[j]][c[i]]==0 && b[c[j]][c[k]]==0)
        			a[i][j]=min(a[i][k]+a[k][j],a[i][j]);
	if(a[s][t]<21474848) 
		cout<<a[s][t];
	else
		cout<<"-1";
    return 0;
}
2023/5/16 18:52
加载中...