程式設計之美15 彩色的樹

2021-07-02 01:29:07 字數 1091 閱讀 3562

看第一眼以為這個題不好做,把過多的時間浪費在第二題上了。《彩色的樹》這題是乙個頂點染色的問題,用點dfs去不斷染色,然後記錄子樹的個數就好,題目的內容如下:

給定一棵n個節點的樹,節點編號為1, 2, …, n。樹中有n - 1條邊,任意兩個節點間恰好有一條路徑。這是一棵彩色的樹,每個節點恰好可以染一種顏色。初始時,所有節點的顏色都為0。現在需要實現兩種操作:

改變節點x的顏色為y;

詢問整棵樹被劃分成了多少棵顏色相同的子樹。即每棵子樹內的節點顏色都相同,而相鄰子樹的顏色不同

直接貼**了,我的**沒有按時提交,不排除有錯誤。

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#define inf 99999999

#define max_v 200000

using

namespace

std;

int vist[10001];

int ma;

int n;

int color[max_v];

vector

g[max_v];

void dfs(int i)

}return;

}int main(int argc, char* argv)

color[n] = 0;

memset(vist, 0, sizeof(vist));

for(i = 1; i<= n; i++)

}cin>>q;

cout

<<"case #"

<":"

>l;

if(l==1)

cin>>m>>n;

color[m] = n;

ma=0;

memset(vist, 0, sizeof(vist));

for(j = 1; j<= n; j++) }}

}return

0;}

2015程式設計之美 彩色的樹

題目1 彩色的樹 時間限制 2000ms 單點時限 1000ms 記憶體限制 256mb 描述給定一棵n個節點的樹,節點編號為1,2,n。樹中有n 1條邊,任意兩個節點間恰好有一條路徑。這是一棵彩色的樹,每個節點恰好可以染一種顏色。初始時,所有節點的顏色都為0。現在需要實現兩種操作 1.改變節點x的...

程式設計之美 1 5 快速找出故障機器

解法3 使用異或 問題1 找出出現奇數次的兩個數 void findrepeatedtwonumbers int a,int n,int no1,int no2 temp的值現為兩個出現奇數次的數的異或 找第乙個為1的位 for j 0 j sizeof int 8 j 第j位為1,說明這兩個數字在...

程式設計之美 1 5 快速找出故障機器

題目 假設乙個機器只儲存乙個標號為id的記錄,假設每份資料儲存2個備份,這樣就有2個機器儲存了相同的資料。其中id是小於10億的整數 問題1 在某個時間,如果得到乙個資料檔案id的列表。是否能夠快速的找到這個表中僅出現一次的id?即快速找出出現故障的機器儲存的資料id。問題2 如果有兩台機器宕機呢?...