HDU 4786Fibonacci Tree

来源:https://www.cnblogs.com/zwfymqz/archive/2018/02/22/8457945.html
-Advertisement-
Play Games

Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5934 Accepted Submission(s): 1845 Problem Descrip ...


Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 5934    Accepted Submission(s): 1845


Problem Description   Coach Pang is interested in Fibonacci numbers while Uncle Yang wants him to do some research on Spanning Tree. So Coach Pang decides to solve the following problem:
  Consider a bidirectional graph G with N vertices and M edges. All edges are painted into either white or black. Can we find a Spanning Tree with some positive Fibonacci number of white edges?
(Fibonacci number is defined as 1, 2, 3, 5, 8, ... )  

 

Input   The first line of the input contains an integer T, the number of test cases.
  For each test case, the first line contains two integers N(1 <= N <= 105) and M(0 <= M <= 105).
  Then M lines follow, each contains three integers u, v (1 <= u,v <= N, u<> v) and c (0 <= c <= 1), indicating an edge between u and v with a color c (1 for white and 0 for black).  

 

Output   For each test case, output a line “Case #x: s”. x is the case number and s is either “Yes” or “No” (without quotes) representing the answer to the problem.  

 

Sample Input 2 4 4 1 2 1 2 3 1 3 4 1 1 4 0 5 6 1 2 1 1 3 1 1 4 1 1 5 1 3 5 1 4 2 1  

 

Sample Output Case #1: Yes Case #2: No  

 

Source 2013 Asia Chengdu Regional Contest  

 

Recommend We have carefully selected several similar problems for you:  6263 6262 6261 6260 6259      和昨天ysy講的那道題差不多 而且這道題在題目中直接給提示了——》黑邊為0,白邊為1 這樣的話我們做一個最小生成樹和一個最大生成樹 如果在這兩個值的範圍內有斐波那契數,就說明滿足條件   簡單證明:
對於最小生成樹來說,任意刪除一條邊,並加入一條沒有出現過的邊,這樣的話權值至多加1,邊界為最大生成樹    
#include<cstdio>
#include<algorithm>
using namespace std;
const int MAXN=1e6+10,INF=1e9+10;
inline char nc()
{
    static char buf[MAXN],*p1=buf,*p2=buf;
    return p1==p2&&(p2=(p1=buf)+fread(buf,1,MAXN,stdin),p1==p2)?EOF:*p1++;
}
inline int read()
{
    char c=nc();int x=0,f=1;
    while(c<'0'||c>'9'){if(c=='-')f=-1;c=nc();}
    while(c>='0'&&c<='9'){x=x*10+c-'0';c=nc();}
    return x*f;
}
struct node
{
    int u,v,w;
}edge[MAXN];
int num=1;
inline void AddEdge(int x,int y,int z)
{
    edge[num].u=x;
    edge[num].v=y;
    edge[num].w=z;num++;
}
int N,M;
int fib[MAXN];
int fa[MAXN];
int comp1(const node &a,const node &b){return a.w<b.w;}
int comp2(const node &a,const node &b){return a.w>b.w;}
int find(int x)
{
    if(fa[x]==x) return fa[x];
    else return fa[x]=find(fa[x]);
}
void unionn(int x,int y)
{
    int fx=find(x);
    int fy=find(y);
    fa[fx]=fy;
}
int Kruskal(int opt)
{
    if(opt==1) sort(edge+1,edge+num,comp1);
    else sort(edge+1,edge+num,comp2);
    int ans=0,tot=0;
    for(int i=1;i<=num-1;i++)
    {
        int x=edge[i].u,y=edge[i].v,z=edge[i].w;
        if(find(x) == find(y)) continue;
        unionn(x,y);
        tot++;
        ans=ans+z;
        if(tot==N-1) return ans;
    }
}
int main()
{
    #ifdef WIN32
    freopen("a.in","r",stdin);
    #else
    #endif
    int Test=read();
    fib[1]=1;fib[2]=2;
    for(int i=3;i<=66;i++) fib[i]=fib[i-1]+fib[i-2];
     int cnt=0;
     while(Test--)
    {
        N=read(),M=read();num=1;
        for(int i=1;i<=N;i++) fa[i]=i;
        for(int i=1;i<=M;i++)
        {
            int x=read(),y=read(),z=read();
            AddEdge(x,y,z);
            AddEdge(y,x,z);
        }
        int minn=Kruskal(1);
        for(int i=1;i<=N;i++) fa[i]=i;
        int maxx=Kruskal(2);
        bool flag=0;
        for(int i=1;i<=66;i++)
            if(minn <= fib[i] && fib[i] <= maxx) 
                {printf("Case #%d: Yes\n",++cnt);flag=1;break;}
        if(flag==0) printf("Case #%d: No\n",++cnt);
    }
    return 0;
}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這個項目做得比較早,當時是基於ionic1和angular1做的。做了四個tabs的app,首頁模仿攜程首頁,第二頁主要是phonegap調用手機核心功能,第三頁模仿微信和qq聊天頁,第四頁模仿一般手機的表單設置頁。同時還模仿知乎做了一個側邊欄頁(賬號:wty,密碼:123456)。 沒有後臺,純前 ...
  • 這個項目最初其實是fork別人的項目。當初想接觸下mongodb資料庫,找個例子學習下,後來改著改著就面目全非了。後臺和資料庫重構,前端增加了登錄註冊功能,僅保留了博客設置頁面,但是也優化了。 "線上地址" 一、更新內容 0. 資料庫重新設計,改成以用戶分組的subDocs資料庫結構 0. 應資料庫 ...
  • 前言 進入自己github主頁會看到自己的提交記錄,如果某天沒有提交記錄,那天的小方框就顯示灰色。強迫症的我,每次進來看著就感覺不爽, 想著自己每天記得提交點東西,爭取像 "阮一峰" 大神一樣,每天都有提交記錄。 但是,畢竟是人,哪天忙了就會忘記提交,所以想著能不能實現在自己阿裡雲伺服器(linux ...
  • 關於元素居中的總結 包括:1.不使用定位 a.水平居中 b.垂直居中 c.其他居中 2.使用定位 a.父元素高寬固定 ... ...
  • 首先下載eCharts源代碼,然後可以按照官網的5分鐘上手ECharts教程做一個簡單的例子,這裡為了將前端顯示和後端邏輯分開,可以建一個index.html和一個繪製圖表的chartTest.js,代碼如下: js代碼如下: 通過上面的代碼就可以繪製出下麵這樣的一個簡單的圖表 其中xAxis和yA ...
  • 作為軟體開發人員,我們已知道思考如何將應用程式因數分解成組件部分。 這是對象導向、軟體抽象和組件化的中心模式。 現在,這種因數分解往往以共用庫和技術層之間的類與介面呈現。 通常採用一種分層方法,有後端存儲、中間層業務邏輯和前端用戶界面 (UI)。 過去幾年來的變化是身為開發人員的我們,開始為業務驅動 ...
  • 一致性演算法 是分散式系統中最重要的問題之一。錶面上看,這似乎很簡單,只是讓幾個節點在某些方面達成一致。在本篇之中,會帶大家完整的梳理分散式系統之中的共識演算法,來更加深刻的理解分散式系統的設計。 1.原子提交和兩階段提交(2PC) 原子提交防止了資料庫處於半更新的狀態,這對於需要滿足多對象事務和維護次 ...
  • 該模塊作用是完成Python數值和C語言結構體的Python字元串形式間的轉換。這可以用於處理存儲在文件中或從網路連接中存儲的二進位數據,以及其他數據源。 用途: 在Python基本數據類型和二進位數據之間進行轉換 模塊提供了用於在位元組字元串和Python原生數據類型之間轉換函數,比如數字和字元串。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...