Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<vector>
- #include<queue>
- #include<iostream>
- using namespace std;
- #define ll int
- #define ARRS ((ll)(6e3+100))
- #define fr first
- #define sc second
- #define pb push_back
- #define MX ((ll)(1e9+100))
- #define MAX ((ll)(1e18+100))
- ll n,m;
- vector<ll> v[ARRS];
- ll f[6000][400];
- ll a[6000];
- queue<pair<ll, pair<ll,ll> > > st;
- int main(){
- ll n,m,k,p;
- ios::sync_with_stdio(0);
- cin>>n>>m;
- for(int i=0; i<n; i++){
- cin>>a[i];
- }
- for(int i=0; i<m; i++){
- cin>>k>>p;
- k--;
- p--;
- v[k].pb(p);
- v[p].pb(k);
- }
- st.push(make_pair(0,make_pair(0,0)));
- while(st.size()){
- pair<ll,pair<ll,ll> > x=st.front();
- st.pop();
- if(f[x.sc.fr][x.sc.sc])continue;
- f[x.sc.fr][x.sc.sc]=1;
- ll d=x.fr+1;
- cout<<d<<" "<<x.fr<<" "<<x.sc.fr<<" "<<x.sc.sc<<endl;
- for(int i=0; i<v[x.sc.fr].size(); i++){
- int y=v[x.sc.fr][i];
- ll l=x.sc.fr;
- ll r=y;
- ll k=x.sc.sc;
- //if(a[l]>a[r])swap(l,r);
- if(abs(a[r]-a[l])<180){
- k+=a[r]-a[l];
- }
- else {
- k-=a[r]-a[l];
- }
- k%=360;
- k+=360;
- k%=360;
- if(k&&y==0){
- cout<<k<<endl;
- cout<<d<<endl;
- return 0;
- }
- st.push(make_pair(d,make_pair(y, k) ));
- }
- }
- cout<<-1<<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement