求助 一直输出-1
查看原帖
求助 一直输出-1
78469
czj2006楼主2020/10/15 12:56
#include<bits/stdc++.h>
using namespace std;
#define reg register
int n,k,m,s,t,c[101],a[101][3],g[101][101],h[101][101]={999999999};

int main(){
	/*freopen("culture.in","r",stdin);
	freopen("culture.out","w",stdout);*/
	scanf("%d%d%d%d%d",&n,&k,&m,&s,&t);
	for (reg int i=1;i<=n;i++)  scanf("%d",&c[i]);
	for (reg int i=1;i<=k;i++)
		for (int j=1;j<=2;j++)  scanf("%d",&a[i][j]);
	for (reg int i=1;i<=m;i++) {
		int u,v,d;
		scanf("%d%d%d",&u,&v,&d);
		if (g[c[v]][c[u]]==0 && c[v]!=c[u])  h[u][v]=min(h[u][v],d);
		if (g[c[u]][c[v]]==0 && c[v]!=c[u])  h[v][u]=min(h[v][u],d);
	}
	if (c[s]==c[t]) {
		printf("-1");
		return 0;
	}
	for (reg int i=1;i<=n;i++)
		for (reg int j=1;j<=n;j++)
			for (reg int p=1;p<=n;p++)
				if (h[i][j]>h[i][p]+h[p][j])
					h[i][j]=h[i][p]+h[p][j];
	if (h[s][t]=999999999)  printf("-1");
	else  printf("%d",h[s][t]);
	return 0;
}
2020/10/15 12:56
加载中...