<style>
/* 頁面整體設定 */
html, body, .ui-content {
background: #2C2C2C;
color: #00FFD5;
}
/* tag顏色設定 */
.markdown-body h6 {
font-size: .85em;
color: #A5FFE5;
-webkit-animation: discolor 5s linear infinite,
glint 2s ease infinite;
animation: discolor 5s linear infinite,
glint 2s ease infinite;
/*animation: discolor 5s linear infinite,
glint 2s ease infinite;*/
}
/* 設定右上角留言按鈕 */
#comment-app .open-comments {
background: transparent;
}
.btn-default {
background: transparent;
border-color: #A5FFE599;
-webkit-animation: discolor 5s linear infinite,
glint 2s ease infinite;
animation: discolor 5s linear infinite,
glint 2s ease infinite;
}
.btn-default:hover {
background: transparent;
}
.ui-comment-app .open-comments .btn.ui-open-comments {
color: #A5FFE599;
}
.ui-comment-app .open-comments .btn.ui-open-comments:hover {
color: #A5FFE5;
}
/* 設置愛心、收藏、小鈴鐺按鈕 */
.community-button {
color: #A5FFE580;
-webkit-animation: discolor 5s linear infinite,
glint 2s ease infinite;
animation: discolor 5s linear infinite,
glint 2s ease infinite;
}
.community-button:hover {
color: #A5FFE5;
background: transparent;
}
/* 設定 code 模板 */
.markdown-body code,
.markdown-body tt {
background-color: #ffffff36;
}
.markdown-body .highlight pre,
.markdown-body pre {
color: #ddd;
background-color: #00000080;
}
.hljs-tag {
color: #ddd;
}
.token.operator {
background-color: transparent;
}
/* h1, h2 樣式 */
.markdown-body h1,
.markdown-body h2 {
border-bottom-color: #ffffff80;
text-shadow: 3px 3px 3px #009B67;
}
/* 設定小目錄的背景顏色 */
.ui-toc-dropdown {
background-color: #2C2C2C;
}
/* 設定行動裝置中,小目錄按鈕 */
.ui-toc-label.btn {
background: linear-gradient(180deg, #2BE8CF60 0%, #2B83E860 100%);
color: #ffffff90;
}
.ui-toc-label.btn:hover {
background: linear-gradient(180deg, #2BE8CF90 0%, #2B83E890 100%);
color: #ffffff;
}
/* 設定小目錄內連結 */
.ui-toc-dropdown .nav>li>a,
.toc-menu>a {
color: #D4F9FF;
font-weight: bold;
}
.ui-toc-dropdown .nav>li>a:focus,
.ui-toc-dropdown .nav>li>a:hover {
color: #00FFD5;
border-left: 1px solid #00FFD5;
}
.ui-toc-dropdown .nav>.active:focus>a,
.ui-toc-dropdown .nav>.active:hover>a,
.ui-toc-dropdown .nav>.active>a {
color: #00FFD5;
border-left: 1px solid #00FFD5;
/* -webkit-animation: discolor 5s linear infinite,
glint 2s ease infinite;
animation: discolor 5s linear infinite,
glint 2s ease infinite; */
}
.toc-menu>a:focus,
.toc-menu>a:hover {
color: #00FFD5;
}
/* 回到最上面的按鈕 */
.markdown-body a > .fa-chevron-up {
position: fixed;
bottom: 20px;
right: 20px;
padding: 4px;
border-radius: 4px;
color: #fff;
background: linear-gradient(180deg, #2BE8CF60 0%, #2B83E860 100%);
}
.markdown-body a:hover > .fa {
background: linear-gradient(180deg, #2BE8CF95 0%, #2B83E895 100%);
-webkit-animation: discolor 5s linear infinite,
glint 2s ease infinite;
animation: discolor 5s linear infinite,
glint 2s ease infinite;
}
/* 右邊滾動軸 */
::-webkit-scrollbar {
width: 10px;
}
::-webkit-scrollbar-track {
background: transparent;
}
::-webkit-scrollbar-thumb {
background: linear-gradient(180deg, #2BE8CF60 0%, #2B83E860 100%);
border-radius: 3px;
}
::-webkit-scrollbar-thumb:hover {
background: linear-gradient(180deg, #2BE8CF95 0%, #2B83E895 100%);
}
/* 設定連結 */
a,
.open-files-container li.selected a {
color: #89FFF8;
}
a:hover,
.open-files-container li.selected a:hover {
color: #89FFF8;
}
/* 上面的名字顏色修改 */
.text-gray-900 {
--tw-text-opacity: 1;
color: #95FFFF;
animation: discolor 5s linear infinite,
glint 2s ease infinite;
}
/* 下面的名字顏色修改 */
/* 這個會修改到最下面的HackMD 但不會閃爍*/
.footer a {
color: #95FFFF;
}
.text-black-brand {
--tw-text-opacity: 1;
animation: discolor 5s linear infinite,
glint 2s ease infinite;
}
/* 動畫 */
@keyframes discolor {
0%, 100% {filter: hue-rotate(0);}
50% {filter: hue-rotate(180deg);}
}
</style>
###### tags: `LeetCode`
# 1129. Shortest Path with Alternating Colors
## 題目
找到0到每個點的最短距離。
路徑要藍紅間隔。
<a href = "https://leetcode.com/problems/shortest-path-with-alternating-colors/description/"><i class=" fa fa-bug"></i> 題目連結</a>
## 程式碼
```cpp=
class Solution {
public:
vector<int> shortestAlternatingPaths(int n, vector<vector<int>>& redEdges, vector<vector<int>>& blueEdges)
{
vector<vector<int>> red(n, vector<int>()), blue(n, vector<int>());
//red:每個點連接的紅色路徑,blue:每個點連接的藍色路徑
for(vector<int> &r : redEdges)
red[r[0]].push_back(r[1]);
for(vector<int> &b : blueEdges)
blue[b[0]].push_back(b[1]);
vector<int> ans(n, -1);
vector<pair<bool, bool>> visited(n, {false, false});
//是否有走過,{紅色路徑, 藍色路徑}
int length = 0; //現在的距離
queue<pair<int, char>> path; //接下來要走的點
path.push({0, 'w'}); //從0開始往外走
while(!path.empty())
{
int tmp = path.size();
for(int i = 0;i < tmp;++ i)
{
auto [now, color] = path.front();
//now:現在的點,color:上一個路徑的顏色
path.pop();
if(ans[now] == -1)
ans[now] = length;
if(color == 'r' || color == 'w') //紅色 或 第一個
{
visited[now].first = true;
for(int j = 0;j < blue[now].size();++ j) //走藍色路徑
if(!visited[blue[now][j]].second)
path.push({blue[now][j], 'b'});
}
if(color == 'b' || color == 'w') //藍色 或 第一個
{
visited[now].second = true;
for(int j = 0;j < red[now].size();++ j) //走紅色路徑
if(!visited[red[now][j]].first)
path.push({red[now][j], 'r'});
}
}
++ length;
}
return ans;
}
};
```
## DATE
2023/02/11