[USACO Mar08] 混亂的齒輪

來源:互聯網
上載者:User

128. [USACO Mar08] 混亂的齒輪

★   輸入檔案:rollers.in   輸出檔案:rollers.out   簡單對比
時間限制:1 s   記憶體限制:128 MB

Farmer John最近買了台新機器,來幫他做往牛棚裡塞乾草的體力活。但是,由於設計的不合理,機器中有很多冗餘的齒輪。整個機器由一個連在電動機上的大齒輪驅動,這個齒輪被安裝在位置(0,0)。FJ希望知道,在這個機器啟動後,最後轉動起來的齒輪是哪一個。

FJ詳盡地記錄了所有N (2 <= N <= 1080)個齒輪的位置x_i,y_i (-5,000 <= x_i <= 5,000; -5,000 <= y_i <= 5,000)和半徑r_i (3 <= r_i <= 1024)。你的任務是,找出整個傳動系統末端的齒輪(一個被其他齒輪帶動,但沒有帶動其他任何裝置的齒輪)的位置。除了驅動整個機器的大齒輪,其他齒輪 都只會被另一個齒輪帶動。

程式名: rollers

輸入格式:

  • 第1行: 1個整數N
  • 第2..N+1行: 第i+1行給出了齒輪i的參數:x_i,y_i,以及r_i

輸入範例 (rollers.in):

30 0 3030 40 20-15 100 55

輸入說明:

機器中一共有3個齒輪。第一個齒輪被放在原點,半徑為30。它帶動了位於(30,40)的半徑為20的齒輪,於是位置為(-15,100)的半徑為55的齒輪最終被第二個齒輪帶動。

輸出格式:

  • 第1行: 輸出2個用空格隔開的整數x,y,表示傳動系統末端齒輪的位置

輸出範例 (rollers.out):

-15 100

 
根據題意直接建圖。然後BFS。
#include<cstdio>#include<queue>using namespace std;const int maxn = 1100;int x[maxn],y[maxn],r[maxn];int f[maxn][maxn];bool vis[maxn];int dist(int x1,int y1,int x2,int y2){       return  (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);}int s,ans,n;void bfs(){    queue<int > q;  q.push(s);    vis[s]=true;    while(!q.empty()){        int now = q.front();q.pop();        for(int i=1;i<=n;i++){            if(!vis[i]&&f[now][i]){                vis[i]=true;                ans=i;                q.push(i);            }        }    }}int main(){    freopen("rollers.in","r",stdin);    freopen("rollers.out","w",stdout);    scanf("%d",&n);    for(int i=1;i<=n;i++){         scanf("%d%d%d",&x[i],&y[i],&r[i]);         if(x[i]==0&&y[i]==0){           s=i;         }    }    for(int i=1;i<=n;i++){       for(int j=1;j<=n;j++){          if(i!=j){             int s=dist(x[i],y[i],x[j],y[j]);             if(s<=(r[i]+r[j])*(r[i]+r[j])){                f[i][j]=1;             }          }       }    }    bfs();    printf("%d %d\n",x[ans],y[ans]);    return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.