洛谷 P1608 路徑統計 膜改dij

2021-08-15 07:29:15 字數 1004 閱讀 7166

傳送門

// 題意: 就是求1-n的最短路條數.

注意乙個點就是重邊只算一條(所以我wa了兩發), 所以我們建圖時需要去重.

然後開乙個陣列記錄下到這個點時最短路有多少條, 所以當dis[to] == dis[u.to] + e[i].w; 就要更新這個記錄陣列, ans[to] += ans[u.to];

就是在原先的dij進行一些小的改變即可.

ac code

const int maxn = 2e3+5;

int cas=1;

struct node

}e[maxn*maxn];

int cnt, head[maxn];

void add(int u, int v, int w) ;

head[u] = cnt++;

}void init()

int dis[maxn], vis[maxn];

int ans[maxn];

void dij(int st, int ed) );

fill(dis, inf); fill(vis, 0); fill(ans ,0);

dis[st] = 0; ans[st] = 1;

while(!q.empty()) );

}else

if (d == dis[to]) ans[to] += ans[u.to];

// cout << "aaa"

<< ans[u.to] << ' '

<< ans[to] << endl;}}

if (dis[ed] == inf) cout << "no answer"

<< endl;

else

printf("%d

%d\n", dis[ed], ans[ed]);

}int

s[maxn][maxn];

void solve()

dij(1, n);

}

洛谷 P1608 路徑統計

rp餐廳 的員工素質就是不一般,在齊刷刷的算出同乙個 號碼之後,就準備讓hzh,tzy去送快餐了,他們將自己居住的城市畫了一張地圖,已知在他們的地圖上,有n個地方,而且他們目前處在標註為 1 的小鎮上,而送餐的地點在標註為 n 的小鎮。有點廢話 除此之外還知道這些道路都是單向的,從小鎮i到j需要花費...

洛谷 P1608 路徑統計

洛谷傳送門 rp 餐廳 的員工素質就是不一般,在齊刷刷的算出同乙個 號碼之後,就準備讓 hzh,tzy 去送快餐了,他們將自己居住的城市畫了一張地圖,已知在他們的地圖上,有 nn 個地方,而且他們目前處在標註為 1 的小鎮上,而送餐的地點在標註為 n 的小鎮。有點廢話 除此之外還知道這些道路都是單向...

洛谷 P1608 路徑統計

rp餐廳 的員工素質就是不一般,在齊刷刷的算出同乙個 號碼之後,就準備讓hzh,tzy去送快餐了,他們將自己居住的城市畫了一張地圖,已知在他們的地圖上,有n個地方,而且他們目前處在標註為 1 的小鎮上,而送餐的地點在標註為 n 的小鎮。有點廢話 除此之外還知道這些道路都是單向的,從小鎮i到j需要花費...