河南省第九屆省賽 通道安全

2021-08-19 07:45:11 字數 1452 閱讀 2089

時間限制:

1000 ms  |  記憶體限制:

65535 kb

難度:2描述

alpha 機構有自己的一套網路系統進行資訊傳送。情報員 a 位於節點 1,他準備將乙份情報 傳送給位於節點 n 的情報部門。可是由於最近國際紛爭,戰事不斷,很多通道都有可能被遭到監 視或破壞。 經過測試分析,alpha 情報系統獲得了網路中每段通道安全可靠性的概率,情報員 a 決定選 擇一條安全性最高,即概率最大的通道路徑進行傳送情報。 你能幫情報員 a 找到這條通道路徑嗎?

第一行: t 表示以下有 t 組測試資料 ( 1≤t ≤8 )

對每組測試資料:

第一行:n m 分別表示網路中的節點數和通道數 (1<=n<=10000,1<=m<=50000)

接下來有 m 行, 每行包含三個整數 i,j,p,表示節點 i 與節點 j 之間有一條通道,其信

道安全可靠性的概率為 p%。 ( 1<=i, j<=n 1<=p<=100)

輸出每組測試資料,輸出佔一行,乙個實數 即情報傳送到達節點 n 的最高概率,精確到小數點後

6 位。

樣例輸入

1

5 75 2 100

3 5 80

2 3 70

2 1 50

3 4 90

4 1 85

3 1 70

樣例輸出

61.200000
**

河南省第九屆省賽

題意分析:沒錯,這道題就是求最長路徑,首先用鄰接矩陣會爆記憶體,用地傑斯特拉的鄰接表做法會超時,就得用spfa演算法

**如下:

#include #include #include using namespace std;

const int inf = 0x3f3f3f3f;

const int max_n = 10002;

struct node

edge[100050];

int head[max_n];

bool vis[max_n];

double dis[max_n];

int n,m,num;

void add_edge(int u,int v,double w) //構造鄰接表

double spfa() //spfa 演算法

memset(vis,false,sizeof(vis));

dis[1] = 1.0;

vis[1] = true;

q.push(1);

while(!q.empty())}}

} return dis[n];

}int main()

//spfa();

printf("%.6lf\n",spfa()*100);

} return 0;

}

河南省第九屆ACM C題

題目 從第乙個節點到底n個節點傳遞資訊,請選擇一條安全概率最高的。輸入 第一行 t 表示有t組測試資料 1 t 8 對於每組測試資料 第一行 n,m 分別表示節點數和通道數 1 n 10000 1 m 50000 接下來有m行 每行 i,j,p 表示節點i,j間有一條通道,p 表示安全的概率 輸出 ...

第九屆河南省ACM省賽 D 飛彈發射

alpha 機構研發出一種新型智慧型飛彈,它能夠在雷達檢測到的區域內,選擇一條前進的路徑,擊破路徑上所有的目標物。雷達位於 0,0 處,它能夠檢測到兩條射線之間的區域 不妨設在第一象限 飛彈一開始置放在 0,0 處,它可以在雷達能檢測到的區域內先選擇乙個目標物擊破,然後 再繼續前進,選擇另乙個目標物...

飛彈發射 河南省第九屆省賽D題

時間限制 1000 ms 記憶體限制 65535 kb 難度 4 alpha 機構研發出一種新型智慧型飛彈,它能夠在雷達檢測到的區域內,選擇一條前進的路徑,擊破路徑上所有的目標物。雷達位於 0,0 處,它能夠檢測到兩條射線之間的區域 不妨設在第一象限 飛彈一開始置放在 0,0 處,它可以在雷達能檢測...