Another Server
何老師某天在機房裏搞事情的時候,發現機房裏有臺服務器,從到標號,同時有條網線,從到標號,其中第條網線雙向連接着號服務器和號服務器,在一個單位時間內最多能夠承受個單位流量。
顯然這些服務器之間要進行信息交換,爲了測試服務器的抗壓能力,你需要幫何老師計算出號服務器在一個單位時間內最多能向號服務器發送多少個單位流量的數據,這裏認爲數據的傳輸是瞬間完成的。
(該圖引用自百度百科)
Input
第一行是一個正整數,表示測試數據的組數,
對於每組測試數據,
第一行是一個整數,表示服務器的數量,
第二行包含個以空格分隔的正整數,表示網線單位時間內能承受的流量,保證不超過。
Output
對於每組測試數據,輸出一個整數,表示號服務器在一個單位時間內最多能向號服務器發送的數據量。
Sample Input
2
2
1 1
3
1 3 2 4
Sample Output
2
4
Hint
表示不大於的最大整數,例如。
題解:是不是猛一看有點最短路的意思,其實仔細讀一讀,你會發現1~n的n-1條邊每條邊都有兩個線路,最大承載就是這兩之和,所以就簡單了,直接相鄰兩數相加,求最小值就好了……
#include<bits/stdc++.h>
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<stdlib.h>
#include<time.h>
#include<string>
#include<math.h>
#include<map>
#include<queue>
#include<stack>
#define INF 0x3f3f3f3f
#define ll long long
#define For(i,a,b) for(int i=a;i<b;i++)
#define sf(a) scanf("%d",&a)
#define sfs(a) scanf("%s",a)
#define sff(a,b) scanf("%d%d",&a,&b)
#define sfff(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define pf(a) printf("%d\n",a)
#define P() printf("\n")
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
int main()
{
int t,n,ans,a,flag,s;
sf(t);
while(t--)
{
sf(n);
flag=0,ans=0,s=INF;
For(i,0,2*n-2)
{
flag++;
sf(a);
ans+=a;
if(flag==2)
{
flag=0;
s=min(s,ans);
ans=0;
}
}
pf(s);
}
}