如何用wordpress盈利,网络网站推广优化,做读书笔记的网站,能制作网页的软件小萨的烦恼
ssl 1624
题目大意#xff1a;
一个无向图#xff0c;可以使其中一条道路的值除以2#xff0c;求两个点之间的最短路
原题#xff1a;
Description
圣诞节又要到了#xff01;小萨希望和自己心仪的MM一起出去度过一个浪漫的的圣诞节。他进行了详尽的准备…小萨的烦恼
ssl 1624
题目大意
一个无向图可以使其中一条道路的值除以2求两个点之间的最短路
原题
Description
圣诞节又要到了小萨希望和自己心仪的MM一起出去度过一个浪漫的的圣诞节。他进行了详尽的准备找到了N个很适合他们去约会的好地方但无奈小萨和他的MM都是初三学校晚上必须回学校上晚修没有足够的时间让他们走遍每一个地方。迫于无奈小萨选择了一个最合适的地方S。小萨打算和他的MM一起步行到那个地方那样他们就有很多时间来聊天玩乐但是无奈时间有限小萨决定坐公共汽车过去。然而小萨发觉自己的钱只够买一张公共汽车车票了小萨该怎么办呢他找到了你……
【题目描述】
小萨将给出一张地图它可以看做一个有NN100个结点的图。这张地图有N个公共汽车站小萨只可以在这N个汽车站上公共汽车。有些车站之间存在一条双向通路无论是公共汽车还是小萨都只能走这些通路。若两个车站之间的距离为d步行所需要的时间为2*d秒坐公共汽车所需要的时间为d秒。小萨他们只有T秒的时间他希望你求出他和他的MM出去约会后能否及时赶回来若不能则输出“You are day dreaming!”否则输出他们所需要花费的最少时间。 注意一张公共汽车车票可以使用两次只可以搭乘同一辆公共汽车即可以认为小萨去约会地点的时间和回来的时间相等。
Input
第一行有三个整数N、T、S 接下来是一个N*N的邻接矩阵。两两车站之间的距离不超过10^9。A[I,j]为0表示I和J车站不连通。
Output
若小萨他们不能在限定时间内赶回学校那么输出“You are day dreaming!”不包括引号 否则输出一个整数为他们所需要花费的最少时间。
Sample Input
4 5 4 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0
Sample Output
2
Hint
【数据范围】
20%的数据N10 100%的数据N70 T10^9
解题思路
这道题很可能想到先找一条最短路再用贪心的想法来找一条路但遇到下图时就会先选1-2-3折半后就是347但选1-2折半后就是6所以以上想法行不通 我们可以先打一个Floyed然后枚举每一条边来折半然后分别连接起点和重点再求最小值就行了
代码
#includecstdio
#includeiostream
#includecstring
using namespace std;
int n,s;
long long t,ans,a[105][105],b[105][105];
long long minn(long long aa,long long bb)
{if (aabb) return aa;return bb;
}
int main()
{scanf(%d %lld %d,n,t,s);for (int i1;in;i)for (int j1;jn;j){scanf(%lld,a[i][j]);//输入if (!a[i][j]) a[i][j]130;//不连通if (ij) a[i][j]0;//同一个点b[i][j]a[i][j]*2;//步行}for (int k1;kn;k)for (int i1;in;i)for (int j1;jn;j)if (k!ik!ji!j)b[i][j]minn(b[i][j],b[i][k]b[k][j]);//Floyedans130;//预处理for (int i1;in;i)for (int j1;jn;j)ansminn(ans,a[i][j]b[1][i]b[j][s]);//枚举每一条边来折半然后线的两边分别连接起点和终点if (ans*2t) printf(You are day dreaming!);//超时了else printf(%lld,ans*2);//输出
}