问题 2542 --花生花生转起来

2542: 花生花生转起来★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 552  解决: 326
[提交][状态][命题人:]

题目描述

小红有很多花生,所以她将花生做成了齿轮的形状。经过细致的排列,小红让花生之间可以像齿轮一样被驱动而转动起来,如果两颗花生转动起来所形成的圆能够正好相切,则说明其中一颗花生可以被另一颗驱动。已知最开始转动的花生在茶几的正中央,也就是(0,0)。小红想知道,最后转动起来的花生是哪一颗。题目保证每颗花生只会被另一颗花生驱动,所以只有一颗花生是最后转动的。

#include <bits/stdc++.h>
using namespace std;
int n,i;
int x[2001],y[2001];
float r[2001];
bool f[2001];
float xb(int a, int b)
{
    return  sqrt(a*a+b*b);
}
void work(int k)//编号为k的花生带动下一颗花生转动的连锁 
{
    int i;
    for(i=1;i<=n;i++)
        if(!f[i])
            if(_____(1)_______)
            {
                ______(2)______
                work(i);
            }
}
int main()
{
    cin>>n;
    for(i=1;i<=n;i++) cin>>x[i]>>y[i]>>r[i]; 
    for(i=1;i<=n;i++)
        if(_____(3)________)
        {
            work(i);
        }
    for(i=1;i<=n;i++)
        if(______(4)_______)//输出最后一颗花生所在的坐标 
        cout<<_____(5)______<<endl;
    return 0;
}

输入

第一行包括一个整数n代表总共有n颗花生。

第2...N+1行,第i+1行给出第i颗花生在茶几坐标(xi,yi)上,以及花生的半径长ri。

输出

输出一行包括用一个空格隔开的两个整数x,y,表示最后一颗花生所在茶几的位置坐标。
样例输入
Copy
3
0   0   30
30   40   20
-15   100   55
样例输出
Copy
-15 100

提示

来源

[提交][状态]