发飙的蜗牛 @ 2018-07-21 16:16:02
#include<bits/stdc++.h>
using namespace std;
int min1=999999;
int map1[1002][1002],money[1002],vis[1002];
int main()
{
int n,m,b;
cin>>n>>m>>b;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(i==j) map1[i][j]=0;
else map1[i][j]=min1;
}
}
for(int i=1;i<=n;i++)
{
cin>>money[i];
}
int ai,bi,ci;
for(int i=1;i<=n;i++)
{
cin>>ai>>bi>>ci;
map1[ai][bi]=ci;
}
int money1=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
for(int k=1;k<=n;k++)
{
if(map1[i][j]>map1[i][k]+map1[k][j])
{
map1[i][j]=map1[i][k]+map1[k][j];
vis[i]=1;
vis[j]=1;
vis[k]=1;
}
}
}
}
if(map1[1][n]>=b)
{
printf("AFK");
}
else
{
for(int i=1;i<=n;i++)
{
if(vis[i]==1)
{
money1=max(money1,money[i]);
}
}
printf("%d",money1);
}
return 0;
}
大佬请看,帮我纠纠错,在下感激不尽。orz
by 斗神·君莫笑 @ 2018-07-21 16:20:39
滴滴,似乎您数组不够
by 发飙的蜗牛 @ 2018-07-21 22:46:05
@斗神·君莫笑 但是,不就爆了吗
by forever_shi @ 2018-08-04 19:45:53
@发飙的蜗牛 要用邻接表存图,这道题不能用邻接矩阵
by 发飙的蜗牛 @ 2018-08-05 14:55:43
@forever誓 好吧,我去试试,谢谢