#include<stdio.h> #include<iostream> #include<string.h> #include<string> #include<ctype.h> #include<math.h> #include<set> #include<map> #include<vector> #include<queue> #include<bitset> #include<algorithm> #include<time.h> using namespace std; void fre(){freopen("c://test//input.in","r",stdin);freopen("c://test//output.out","w",stdout);} #define MS(x,y) memset(x,y,sizeof(x)) #define MC(x,y) memcpy(x,y,sizeof(x)) #define MP(x,y) make_pair(x,y) #define ls o<<1 #define rs o<<1|1 typedef long long LL; typedef unsigned long long UL; typedef unsigned int UI; template <class T1,class T2>inline void gmax(T1 &a,T2 b){if(b>a)a=b;} template <class T1,class T2>inline void gmin(T1 &a,T2 b){if(b<a)a=b;} const int N=0,M=0,Z=1e9+7,ms63=1061109567; int casenum,casei; int x,y,z; int main() { while(~scanf("%d%d%d",&x,&y,&z)) { int ans=min(x+x+y+y,x+z+y); gmin(ans,x+z+z+x); gmin(ans,y+z+z+y); printf("%d\n",ans); } return 0; } /* 【题意】 给你一个双向边带权三元环,问我们从点A出发,遍历3个点之后再回到A的最短距离 【类型】 水题 【分析】 其实一共也只不过有4种情况而已—— 1,绕环 2,不走1号边,其他边走两次 3,不走2号边,其他边走两次 4,不走3号边,其他边走两次 取个最小值即可。 */