本文主要是介绍(ssl 1624)小萨的烦恼#floyd#,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
若小萨他们不能在限定时间内赶回学校,那么输出You are day dreaming!
否则,输出一个整数,为他们所需要花费的最少时间。
分析
所以这是一道求最短路径的题目(主要是不直接连通,坐车要和走路配套)
虽然可以用dijkstra(幸好没拼错)
但是floyd简洁!!
代码(floyd)
#include <cstdio>
#include <algorithm>
using namespace std;
int ans,n,t,m,a[101][101][2];
int main(){scanf("%d%d%d",&n,&t,&m);for (int i=1;i<=n;i++)for (int j=1;j<=n;j++){scanf("%d",&a[i][j][1]);if (!a[i][j][1]) a[i][j][1]=1000000000;a[i][j][0]=a[i][j][1]*2;}for (int k=1;k<=n;k++)for (int i=1;i<=n;i++)for (int j=1;j<=n;j++)if (i!=j){a[i][j][1]=min((long long)a[i][j][1],min((long long)a[i][k][1]+a[k][j][0],(long long)a[i][k][0]+a[k][j][1]));//前面走路,后面走路,保留原值a[i][j][0]=min((long long)a[i][j][0],(long long)a[i][k][0]+a[k][j][0]);}ans=2*a[1][m][1];//来回if (ans<=t) printf("%d",ans); else printf("You are day dreaming!");return 0;
}
这篇关于(ssl 1624)小萨的烦恼#floyd#的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!