inline int read()
{
int x=0;
char ch=getchar();
while(ch<'0'||ch>'9')
ch=getchar();
while(ch<='9'&&ch>='0')
{
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x;
}
不理解,我用这个快读明明读不了负数,但是用这个来读入w却依然能A,不是很理解
难道是w的范围有问题,还是凑巧?
顺便给个Floyd大佬们方便测试
#include<bits/stdc++.h>
using namespace std;
int f[1500][1500],u,v,w,n,m,i,j,k;
inline int read()
{
int x=0;
char ch=getchar();
while(ch<'0'||ch>'9')
ch=getchar();
while(ch<='9'&&ch>='0')
{
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x;
}
int main()
{
n=read(),m=read();
for(i=1;i<=m;i++)
{
u=read(),v=read(),w=read();
f[u][v]=max(f[u][v],w);
}
for(k=1;k<=n;k++)
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(f[i][k]&&f[k][j])
if(f[i][j]<f[i][k]+f[k][j])
f[i][j]=f[i][k]+f[k][j];
if(f[1][n]==0)
{
printf("-1");
return 0;
}
printf("%d",f[1][n]);
return 0;
}