第十屆省賽 B題.情報傳遞
題目:
![](https://i.iter01.com/images/97b7dfc9512843204d22e66ae9845bddf1cbd66768d00b2e4e9da633e486190d.png)
這道題是昨天熱身賽A的的擴充。
這道題裡面有一些東西需要根據樣例的輸出來獲取
比如: 0 也要向上級傳遞資訊
這個樹的關係是確定的,但通道並不一定建立
這可以通過樣例的前5條推斷出來
是一道需要動點腦筋的題,把樣例給的圖(樹)畫出來,
分析輸出的值,來確定準確的題意。
程式碼:
#include<iostream>
#include<vector>
#include<queue>
#include<string.h>
#include<cmath>
#include<string>
#include<set>
#include<list>
#include<stack>
#include<cctype>
#include<functional>
#include<algorithm>
#include<iostream>
#include<stdio.h>
#include<sstream>
usingnamespace std;
int n, m;
int up[5100];
int build[5100];
vector<int> down[5100];
int Send(int s)
{
int ret = 0;
// 順著s一直找上級,一直找到0
while (s)
{
if (!build[s])
{
build[s] =true;
ret++;
}
s = up[s];
}
// 注意0本身也要向上建立通道。
// 因為樣例的第一行 Send 0 輸出為 0
if (!build[0])
{
build[0] = true;
ret++;
}
return ret;
}
int Danger(int s)
{
int ret = 0;
queue<int> q;
q.push(s);
while (!q.empty())
{
//從佇列中拉取一個節點
s = q.front();
q.pop();
//看 s 自己是否向上級建立了通道
if (build[s])
{
ret++;
build[s] =false;
}
//遍歷 s 所有的下級
for (int i = 0; i < down[s].size(); ++i)
{
// 看這個下級是否建立了通道
if (build[down[s][i]])
q.push(down[s][i]);
}
}
return ret;
}
int main()
{
int i;
cin >> n;
for (i = 1; i <n; ++i)
{
scanf("%d", &up[i]); // 設定 i的上級
down[up[i]].push_back(i); // 設定屬於up[i] 的下級
}
char buffer[20];
cin >> m;
for (i = 0; i <m; ++i)
{
int num;
scanf("%s", buffer);
scanf("%d", &num);
//只用比較第一個字元就可以知道是哪條命令
if (buffer[0] =='S')
printf("%d\n", Send(num));
else
printf("%d\n", Danger(num));
}
return 0;
}
相關文章
- 第十五屆藍橋杯軟體賽省賽C/C++B 組題解C++
- 第十三屆藍橋杯省賽C/C++ B組C++
- 試題B:小球反彈(第十五屆藍橋杯省賽B組c/c++組)C++
- 第十五屆藍橋杯C++B組省賽總結C++
- 第十屆藍橋杯省賽C++B組 等差數列C++
- 第十四屆藍橋杯省賽C++ B組(個人經歷 + 題解)C++
- 第十三屆藍橋杯省賽A組
- 2019年省賽第十屆藍橋杯B組C/C++試題H解 等差數列C++
- 2015年藍橋杯六屆省賽大學B組真題
- 第十屆藍橋杯C++國賽B組部分題解(假題解)C++
- 第六屆藍橋杯省賽CC++B組C++
- 第十一屆藍橋杯省賽CC++組第二場比賽C++
- 第十四屆藍橋杯大賽軟體賽省賽Python 《三國遊戲》Python遊戲
- 第九屆藍橋杯B組省賽———乘積最大
- 第十屆山東省大學生程式設計競賽題解(A、F、M、C)程式設計
- 【藍橋杯考前突擊】第十屆藍橋杯省賽C/C++大學B組 試題 D 數的分解C++
- 第九屆藍橋杯軟體類省賽 Java B組 題目及解析Java
- 第十五屆藍橋杯大賽軟體賽省賽 C/C++ 大學 A 組C++
- 2018年第九屆藍橋杯省賽試題及詳解(Java本科B組)Java
- 2017第八屆藍橋杯C/C++ B組省賽第二題 秒解C++
- 藍橋杯第五屆省賽題目及題解
- 2018第九屆藍橋杯省賽C++B組【第四題:測試次數】C++
- 2013第四屆藍橋杯省賽C++B組【第六題:三部排序】C++排序
- 2013年省賽b組
- 2017藍橋杯省賽第十題:k倍區間
- 2016年省賽第七屆藍橋杯B組C/C++第九題解 交換瓶子C++
- 九州信泰杯 第十一屆山東省網路安全技能大賽
- 2017省賽藍橋杯B組
- 2018藍橋杯省賽B組
- 2015年省賽第六屆藍橋杯B組C/C++第五題解 九陣列分數C++陣列
- 藍橋杯省賽真題2015年第六屆Java本科B組第01題——三角形面積Java
- 技能報國綠盟科技助力雲南省第十八屆職工職業技能大賽網路與資訊保安管理員決賽圓滿完賽
- 第15屆浙江省大學生程式設計競賽D題程式設計
- 第九屆藍橋杯省賽C++A組 倍數問題(dfs)C++
- 第五屆省賽(軟體類)真題—-Java大學C組答案Java
- 第十三屆公益節北京舉辦 傳遞新時代公益生機與活力
- 2017第八屆天梯賽省賽C++C組【第一題:貪吃蛇長度】C++
- 模擬比賽-14屆研究生組C++省賽C++
- 2020藍橋杯省賽B組C++(第二場)真題C++