zoukankan      html  css  js  c++  java
  • HDU4849

    一道简单的dijkstra 写了好久。。。了个大去  果然代码太弱了

    #include<iostream>
    #include<cstdlib>
    #include<cstring>
    #define INF 0x3f3f3f3f
    #define MAXM 1009
    using namespace std;
    long long x[MAXM*MAXM],y[MAXM*MAXM],z[MAXM*MAXM];
    long long s[MAXM],dist[MAXM];
    long long map[MAXM][MAXM];
    long long m,n;
    int i,j,k;
    void dijkstra(int v0){
    for(i=0;i<n;i++){
    dist[i]=map[v0][i];
    s[i]=0;
    }
    s[v0]=1;dist[v0]=0;
    for(i=0;i<n-1;i++){
    long long min=INF;
    long long u=v0;
    for(j=0;j<n;j++){
    if(!s[j]&&dist[j]<min){
    u=j;min=dist[j];
    }
    }
    s[u]=1;
    for(k=0;k<n;k++){
    if(!s[k] && map[u][k]<INF && dist[u]+map[u][k]<dist[k]){
    dist[k]=dist[u]+map[u][k];
    }
    }
    }
    }
    int main(){
    while(cin>>n>>m){
    cin>>x[0]>>x[1]>>y[0]>>y[1];
    for(i=2;i<n*(n+1);i++){
    x[i]=(12345+x[i-1]*23456+x[i-2]*34567+x[i-1]*x[i-2]*45678)%5837501;
    y[i]=(56789+y[i-1]*67890+y[i-2]*78901+y[i-2]*y[i-1]*89012)%9860381;
    z[i]=(x[i]*90123+y[i])%8475871+1;
    }
    z[0]=(x[0]*90123+y[0])%8475871+1;
    z[1]=(x[1]*90123+y[1])%8475871+1;
    for(i=0;i<n;i++){
    for(j=0;j<n;j++){
    if(i==j)
    map[i][j]=0;
    else 
    map[i][j]=z[i*n+j];
    }
    }
    long long c;
    long long mint=INF;
    dijkstra(0);
    for(i=1;i<n;i++){
    c=dist[i]%m;
    if(c<mint)
    mint=c;
    }
    cout<<mint<<endl;
    }
    return 0;
    }

  • 相关阅读:
    spring aop简单理解
    动态代理
    静态代理
    spring的i o c简单回顾
    java注解的概念理解
    Eclipse中配置Tomcat
    java中Optional和Stream流的部分操作
    java中的stream的Map收集器操作
    java中的二进制运算简单理解
    Class.forName和ClassLoader.loadClass区别(转)
  • 原文地址:https://www.cnblogs.com/acplayfacm/p/3834480.html
Copyright © 2011-2022 走看看