Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #pragma comment(linker, "/stack:16777216")
- #include <string>
- #include <vector>
- #include <map>
- #include <list>
- #include <iterator>
- #include <set>
- #include <queue>
- #include <iostream>
- #include <sstream>
- #include <stack>
- #include <deque>
- #include <cmath>
- #include <memory.h>
- #include <cstdlib>
- #include <cstdio>
- #include <cctype>
- #include <algorithm>
- #include <utility>
- #include <fstream>
- #include <time.h>
- using namespace std;
- #define FOR(i, a, b) for(int i = (a); i < (b); ++i)
- #define RFOR(i, b, a) for(int i = (b) - 1; i >= (a); --i)
- #define REP(i, N) FOR(i, 0, N)
- #define RREP(i, N) RFOR(i, N, 0)
- #define FILL(A,value) memset(A,value,sizeof(A))
- #define ALL(V) V.begin(), V.end()
- #define SZ(V) (int)V.size()
- #define PB push_back
- #define MP make_pair
- #define y0 gfdssdfer
- #define y1 wetgwervbwqr
- typedef long long Int;
- const int MAX = 2007;
- const int MOD = 1000000007;
- const int INF = 1000000000;
- int tests,n,x[1<<20],y[1<<20],r[1<<20],used[1<<20];
- int a[1<<20],b[1<<20];
- long long gcd(long long a,long long b)
- {
- a=abs(a);
- b=abs(b);
- while (a&&b)a>b?a%=b:b%=a;
- return a+b;
- }
- void dfs(long v)
- {
- used[v]=1;
- for (int i=1;i<=n;i++)
- {
- if (used[i])continue;
- int d1=(x[v]-x[i])*(x[v]-x[i])+(y[v]-y[i])*(y[v]-y[i]);
- int d2=(r[i]+r[v])*(r[i]+r[v]);
- if (d1!=d2)continue;
- long long t1,t2;
- t1=a[v];
- t2=b[v];
- t1*=r[v];
- t2*=r[i];
- long long q=gcd(t1,t2);
- // cout<<"@"<<q<<endl;
- t1/=q;
- t2/=q;
- a[i]=-t1;
- b[i]=t2;
- dfs(i);
- }
- }
- int main(){
- //freopen("C:/input.txt","r",stdin);
- //freopen("C:/output.txt","w",stdout);
- ios_base::sync_with_stdio(0);
- //cin.tie(0);
- cin>>tests;
- for (;tests;--tests)
- {
- cin>>n;
- for(int i=1;i<=n;i++)
- {
- cin>>x[i]>>y[i]>>r[i];
- }
- for (int i=1;i<=n;i++)
- used[i]=0;
- a[1]=b[1]=1;
- dfs(1);
- for (int i=1;i<=n;i++)
- {
- if (used[i]==0)
- cout<<"not moving"<<endl;
- else
- {
- cout<<abs(a[i]);
- if (b[i]>1)
- cout<<"/"<<abs(b[i]);
- if (a[i]>0)cout<<" clockwise"<<endl;
- else cout<<" counterclockwise"<<endl;
- }
- }
- }
- cin.get();cin.get();
- return 0;}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement