本文共 1010 字,大约阅读时间需要 3 分钟。
#include #include #include #include #include #include #include #include #include #include using namespace std; #define MM(a) memset(a,0,sizeof(a)) typedef long long ll; typedef unsigned long long ULL; const int mod = 1000000007; const double eps = 1e-10; const int inf = 0x3f3f3f3f; const int big=50000; int max(int a,int b) {return a>b?a:b;}; int min(int a,int b) {return a G[1005]; void solve() { memset(used,0,sizeof(used)); memset(dist,inf,sizeof(dist)); memset(cost,inf,sizeof(cost)); dist[s]=cost[s]=0; while(1) { int u=-1,minn=inf; for(int i=1;i<=n;i++) if(!used[i]&&dist[i] dist[u]+fd[u][v]) { dist[v]=dist[u]+fd[u][v]; cost[v]=cost[u]+fc[u][v]; } else if(dist[v]==dist[u]+fd[u][v]) if(cost[v]>cost[u]+fc[u][v]) cost[v]=cost[u]+fc[u][v]; //cout< <<" "< <<" "< <<" "< < d) { fd[a][b]=fd[b][a]=d; fc[a][b]=fc[b][a]=c; } else if(fd[a][b]==d) if(fc[a][b]>c) fc[a][b]=c; } scanf("%d %d",&s,&t); solve(); } return 0; }
转载地址:http://ctgsi.baihongyu.com/