HDU 6343(三角形不等式)
Problem L. Graph Theory Homework
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)
Total Submission(s): 272 Accepted Submission(s): 154
Problem Description
There is a complete graph containing n vertices, the weight of the i-th vertex is wi.
The length of edge between vertex i and j (i≠j) is ⌊|wi−wj|−−−−−−−√⌋.
Calculate the length of the shortest path from 1 to n.
Input
The first line of the input contains an integer T (1≤T≤10) denoting the number of test cases.
Each test case starts with an integer n (1≤n≤105) denoting the number of vertices in the graph.
The second line contains n integers, the i-th integer denotes wi (1≤wi≤105).
Output
For each test case, print an integer denoting the length of the shortest path from 1 to n.
Sample Input
1 3 1 3 5
Sample Output
2
Source
考慮1->n 和1->i i->n兩種走法的和
分別為 和
根據三角形不等式,前者顯然小於等於後者
所以直接從1到n就是最短路了
#include<bits/stdc++.h> #define mp make_pair #define fir first #define se second #define ll long long #define pb push_back using namespace std; const int maxn=2e5+10; const ll mod=1e9+7; const int maxm=1e6+10; const double eps=1e-7; const int inf=0x3f3f3f3f; const double pi = acos(-1.0); int n; int w[maxn]; int main(){ int t; scanf("%d",&t); while (t--){ scanf("%d",&n); for (int i=1;i<=n;i++){ scanf("%d",&w[i]); } printf("%d\n",(int)sqrt(abs(w[1]-w[n]))); } return 0; }