Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #define SIZEN 102
- #define SIZEM 1003
- using namespace std;
- double probability[SIZEN][SIZEN], table[SIZEM / 10][SIZEN], p, ans;
- int time, M, N, T, x, y, node, Case = 1;
- void readCase(){
- scanf("%d%d%d", &N, &M, &T);//N=number of node,M=number of edge,T==time;
- for (int i = 0; i < M; i++){
- scanf("%d%d%lf", &x, &y, &p);
- probability[x][y] = p;
- }
- }
- void probability_init(){
- for (int i = 1; i <= SIZEN; i++)
- for (int j = 1; j <= SIZEN; j++){
- probability[i][j] = 0;
- }
- }
- void solve(){
- table[0][1] = 1.0;
- for (int i = 0; i < time; i++){
- for (int j = 1; j <= N; j++){
- if (table[i][j] > 0){
- for (int k = 1; k <= N; k++){
- if (probability[j][k] > 0){
- table[i + 1][k] += (table[i][j] * probability[j][k]);
- }
- }
- }
- }
- }
- }
- void table_init(){
- for (int i = 0; i <= time; i++){
- for (int j = 1; j <= N; j++){
- table[i][j] = 0;
- }
- }
- }
- void solveCase(){
- ans = 0;
- time = T / 10;
- table_init();
- solve();
- }
- void find_node(){
- for (int i = 1; i <= N; i++){
- if (ans < table[time][i]){
- ans = table[time][i];
- node = i;
- }
- }
- }
- int main(){
- freopen("fin.txt", "r", stdin);
- freopen("fout.txt", "w", stdout);
- int t;
- scanf("%d", &t);
- while (t--){
- probability_init();
- readCase();
- solveCase();
- find_node();
- printf("#%d %d %.6lf\n", Case++, node, ans);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement