這個題瘋狂re.。。。。網上找的**也不好使,不懂了。
無向圖,資料量太大,開鄰接矩陣會tle。所以開鄰接向量
先一次bfs,將每乙個點的距離找出來。
第二次bfs,將以每乙個點的距離為參照,先判斷是否是最短路徑(距離減1),然後再判斷顏色。然後再對這個點所有最短路徑且最小顏色的點bfs。注意還要把ans[i]設定為自動更新對應距離的最小顏色。
d[i]和mc設為-1,為初始值。
輸出也可以參考一下
#include#include#include#include#include#includeusing namespace std;
const int maxn=200000+5;
//無向圖
//資料量太大,開鄰接矩陣會tle。所以開鄰接向量
vector g[maxn];//g[i]儲存的事第i個節點指向的邊
vector c[maxn];//g[i]儲存的是第i個節點指向邊對應的權重
int n,m,vis[maxn],d[maxn],ans[maxn];//vis用來儲存是否遍歷到,d儲存各點的距離,ans儲存答案的序列,從0到n-1順序
void init()
for(int i=0;iq;
q.push(n);
d[n]=0;
while(!q.empty())
int mc=-1;//mc為最小顏色的目標節點的顏色
int sz=g[u].size();
for(int i=0;ic[u][i])}}
// printf("mc=%d\n",mc);
int t=d[1]-d[u];
if(ans[t]==0) ans[t]=mc;
else
for(int i=0;i}
}}int main(void)
printf("\n");
}return 0;
}
劉汝佳第六章UVA 548
遞迴遍歷樹還是有點繞。現在看來是這樣 1.先序遍歷的結果,第乙個為節點,然後一坨是preorder left root 的結果,右邊是preorder right root 的結果 2.中序遍歷,同理,節點在中間。3.後序遍歷,同理,節點在最後 在這道題中,因為要區分節點,所以每個節點權值不一樣,所...
劉汝佳第六章UVA 1572
轉化為乙個有向圖,判斷有向圖是否有閉合環。如果有,則可以無限重複。如果沒有,則不行。轉化的具體方式為,遍歷輸入條件的每乙個邊,然後把這個邊的對應節點 比如a 對應a 與這個條件的其他邊相連 模擬現實情況中的兩個正方形相連 網上 的輸入非常漂亮,用了兩個函式,乙個id函式,將52個條件對應為了52個數...
mysql第六章 第六章 mysql日誌
第六章 mysql日誌 一 錯誤日誌 錯誤日誌的預設存放路徑是 mysql 存放資料的地方 hostname.err 1.修改錯誤日誌存放路徑 mysqld log error data mysql mysql.log 2.檢視配置命令 show variables like log error 3...