貌似数据加强了,Floyd过不了了
查看原帖
貌似数据加强了,Floyd过不了了
110790
mysssss楼主2020/9/17 13:53

开了O2之后也只能90

#include<bits/stdc++.h>
using namespace std;
int x,y,z,n,m,dis[1010][1010],ans;
int read()
{
	int f=0,x=0;
	char c=getchar();
	for(;c>'9'||c<'0';c=getchar())
	if(c=='-')
	f=1;
	for(;c>='0'&&c<='9';c=getchar())
	x=(x<<1)+(x<<3)+c-'0';
	return f?-x:x;
}
int main()
{
	n=read(),m=read();
	memset(dis,0x3f,sizeof(dis));
	for(register int i=1;i<=m;i++)
	{
		x=read(),y=read(),z=read();
		dis[x][y]=min(dis[x][y],z);
	}
	for(register int k=1;k<=n;k++)
	for(register int i=1;i<=n;i++)
	for(register int j=1;j<=n;j++)
	dis[i][j]=min(dis[i][k]+dis[k][j],dis[i][j]);
	for(register int i=2;i<=n;i++)
	ans+=dis[1][i]+dis[i][1];
	printf("%d",ans);
	return 0;
}
2020/9/17 13:53
加载中...