zoukankan      html  css  js  c++  java
  • Codeforces 344B Simple Molecules

    Description

    Mad scientist Mike is busy carrying out experiments in chemistry. Today he will attempt to join three atoms into one molecule.

    A molecule consists of atoms, with some pairs of atoms connected by atomic bonds. Each atom has a valence number — the number of bonds the atom must form with other atoms. An atom can form one or multiple bonds with any other atom, but it cannot form a bond with itself. The number of bonds of an atom in the molecule must be equal to its valence number.

    Mike knows valence numbers of the three atoms. Find a molecule that can be built from these atoms according to the stated rules, or determine that it is impossible.

    Input

    The single line of the input contains three space-separated integers a, b and c (1 ≤ a, b, c ≤ 106) — the valence numbers of the given atoms.

    Output

    If such a molecule can be built, print three space-separated integers — the number of bonds between the 1-st and the 2-nd, the 2-nd and the 3-rd, the 3-rd and the 1-st atoms, correspondingly. If there are multiple solutions, output any of them. If there is no solution, print "Impossible" (without the quotes).

    Sample Input

    Input
    1 1 2
    Output
    0 1 1
    Input
    3 4 5
    Output
    1 3 2
    Input
    4 1 1
    Output
    Impossible

    题意:这道题告诉你3个节点的度数,也就是相邻两点的边的数目,例如:我们定义这三个顶点分别是a,b,c,设第一个点和第二个点之间的边的数目为x,第二个点与第三个点之间的边的数目为y,第三个点与第四个
    点之间的边的数目为z,那么a = x + z, b = x + y, c = y + z;而且根据握手定理: 顶点度数之和为变得2倍,所以顶点度数和为偶数,而且两点见得边数不小于0. 有个疑点是为什么x = a +b - c?
     1 /*************************************************************************
     2     > File Name: cf.cpp
     3     > Author: PrayG
     4     > Mail: 
     5     > Created Time: 2016年07月10日 星期日 12时57分34秒
     6  ************************************************************************/
     7 
     8 #include<iostream>
     9 #include<cstdio>
    10 #include<bits/stdc++.h>
    11 #include<string>
    12 using namespace std;
    13 const int maxn = 200005;
    14 int main()
    15 {
    16     int a,b,c;
    17     cin >> a >> b >> c;
    18     int x ,y,z;
    19     int sum;
    20     sum = a+ b + c;
    21     x = a + b - c;
    22     y = b + c - a;
    23     z = a + c - b;
    24     if(x < 0 || y < 0 || z < 0|| sum%2)
    25     {
    26         printf("Impossible
    ");
    27     }
    28     else
    29     {
    30         printf("%d %d %d
    ",x/2,y/2,z/2);
    31     }
    32     return 0;
    33 }
    View Code



  • 相关阅读:
    Java调度实现
    关于《报表》的实际运用案例
    mybaits错误解决:There is no getter for property named 'parentId ' in class 'java.lang.String'
    Java Eclipse进行断点调试
    切割时间工具类
    JavaWeb开发技术基础概念回顾篇
    解决无线网络连接出现黄色感叹号---win10
    登录界面Demo
    MD5加密Demo
    java.lang.NullPointerException&com.cb.action.LoginAction.execute(LoginAction.java:48)
  • 原文地址:https://www.cnblogs.com/PrayG/p/5658022.html
Copyright © 2011-2022 走看看