1wa,1ac,1re,7tle
查看原帖
1wa,1ac,1re,7tle
534986
Bryan_Fang楼主2022/7/3 18:51
#include<bits/stdc++.h>
using namespace std;

#define inf 123456
double h[8]={0,2,6,4,8,6,10,14};
bool s[8],vis[8];
int a,b,n,g[8][8],dis[8],u,v,w,curr,minn;

int main()
{
	for(int i=1;i<=7;i++)
	{
		dis[i]=inf;
		g[i][i]=0;
		for(int j=i;j<=7;j++)
		{
			g[i][j]=inf;
			g[j][i]=inf;
		}
	}
	for(int i=1;i<=7;i++)
	{
		cin>>s[i];
	}
	cin>>a>>b>>n;
	
	
	
	for(int i=1;i<=n;i++)
	{
		cin>>u>>v>>w;
		if(s[w]==1)
		{
			g[u][v]=g[v][u]=h[w]/2;
		}
		else
		{
			g[u][v]=g[v][u]=h[w];
		}
	}
	dis[a]=0;vis[a]=1;
	curr=a;
	
	while(!vis[b])
	{
		for(int i=1;i<=7;i++)
		{
			if(!vis[i]&&g[curr][i]!=inf)
			{
				dis[i]=min(dis[i],dis[curr]+g[curr][i]);
			}			
		}
		minn=inf;
		for(int i=1;i<=7;i++)
		{
			if(!vis[i]&&minn>dis[i])
			{
				minn=dis[i];
				curr=i;
			}
		}
		vis[curr]=1;
	}
//	for(int i=1;i<=7;i++)
//	{
//		cout<<dis[i]<<endl;
//	}
	cout<<dis[b];
	return 0;
 } 
2022/7/3 18:51
加载中...