http://115.236.49.55:83/attachment/7502/problem.pdf
#include<bits/stdc++.h>
using namespace std;
inline long long read()
{
long long s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
return s*w;
}
inline void write(long long x)
{
if(x<0) putchar('-'),x=-x;
if(x>9) write(x/10);
putchar(x%10+'0');
}
struct node
{
long long v,w,next;
}e[100005];
long long eid=1,head[100005];
inline void insert(long long u,long long v,long long w)
{
e[eid].v=v;
e[eid].w=w;
e[eid].next=head[u];
head[u]=eid++;
}
long long flag=0,n,m,c,u,v,w,dp[3005][3005];
inline long long dfs(long long u,long long fa,long long step)
{
if(u==v)
{
flag=1;
return step;
}
for(long long i=head[u];i;i=e[i].next)
{
long long v=e[i].v;
if(v!=fa)
{
if(flag)
{
return step;
}
return dfs(v,u,step+1);
}
}
}
int main()
{
n=read();
m=read();
c=read();
for(long long i=0;i<=200;i++)
{
for(long long j=0;j<=200;j++)
{
dp[i][j]=0x3f3f3f3f;
}
}
for(long long i=1;i<=m;i++)
{
u=read();
v=read();
w=read();
dp[u][v]=w;
insert(u,v,w);
}
for(long long k=1;k<=n;k++)
{
for(long long i=1;i<=n;i++)
{
if(i!=k)
for(long long j=1;j<=n;j++)
{
if(i!=j&&j!=k)
{
dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]);
}
}
}
}
for(long long i=1;i<=c;i++)
{
u=read();
v=read();
if(dp[u][v]!=0x3f3f3f3f)
{
write(dp[u][v]);
putchar(' ');
flag=0;
write(dfs(u,-1,0));
}
else
{
printf("Windows is the best!");
continue;
}
puts("");
}
}
哪错