時間限制:
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 處,它可以在雷達能檢測...