2015 辽宁省赛G题 边权排序

本文深入探讨了深度学习及其在人工智能领域的应用。涵盖了从基础算法到实际案例的全面解析,包括神经网络、强化学习等核心概念,并展示了它们在计算机视觉、自然语言处理、推荐系统等领域的具体应用。

1576: Good Sequence

时间限制: 1 Sec  内存限制: 128 MB
提交: 12  解决: 5
[ 提交][ 状态][ 讨论版]

题目描述

This is the definition of the good sequence:

Suppose sequence the length which is n is : A1,A2...An. If meet the following condition for all the integer i (2<=i<=n): A[i-1]<=A[i], then the sequence A1, A2, …, An is good sequence.

 

You are given a weighted directed graph. The vertex are enumerated from 1 to n. The edges are enumerated from 1 to m. For edge i, the length is wi. If a path from the vertex 1 to vertex i (1<=i<=n) meet the following condition: the sequence of length of the path is good sequence, then the path is called good path. The shortest good path from the vertex 1 to vertex i (1<=i<=n) is di. If there is no such shortest path, then di=0. Your task is to find the sum of all the di(1<=i). As the sum can be rather large, you just find the remainder after dividing the sum by 1000000007. 

Notice: d1 = 0. The input data guarantee the length of every edge is different from each other.

输入

Your program will be tested on one or more test cases.In each test

case, the first line contains two integers n and m (1<=n,m<=10^5), where n is the number of vertex and m is the number of edges. Following

m lines contain one edge each in form ai, bi and wi(1<=ai,bi<=n,1<=wi<=10^9), indicating that there is a directed edge from the vertex ai to vertex bi

and wi is the length of the edge.

输出

For every test case,  print the following line:

answer

where answer is the sum of all the di(1<=i<=n).(mod 10^9+7)

样例输入

4 31 2 62 3 41 4 74 41 2 102 3 111 4 44 3 1

样例输出

1335

提示

来源

2015省赛

#include <iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn=1e5+100;
const int mod=1e9+7;
const ll inf=1e16;
int n,m;
struct node
{
    int u;
    int v;
    ll w;
    int next;
}edge[maxn];
int cnt;
int pre[maxn];
ll d[maxn];
void add(int u,int v,int w)
{
    edge[cnt].u=u;
    edge[cnt].v=v;
    edge[cnt].w=w;
    cnt++;
}
bool cmp(node a,node b)
{
    return a.w<b.w;
}
int main()
{
    while(cin>>n>>m)
    {
        cnt=1;
        memset(pre,-1,sizeof(pre));
        for(int i=1;i<=m;i++)
        {
            int a,b,c;
            scanf("%d%d%d",&a,&b,&c);
            add(a,b,c);
        }
        sort(edge+1,edge+m+1,cmp);
        for(int i=1;i<=n;i++)
            d[i]=inf;
        d[1]=0;
        int i,j,z;
        for( i=1;i<=m;i=j+1)
        {
            for( j=i;j<=m;j++)
                if(edge[i].w!=edge[j].w)
                 break;
            j=j-1;
            for( z=i;z<=j;)
            {
               // printf("%d %d\n",edge[i].u,edge[i].v);
                if(d[edge[z].u]!=inf&&d[edge[z].u]+edge[z].w<d[edge[z].v])
                    {
                        d[edge[z].v]=d[edge[z].u]+edge[z].w;
                        z=i;
                    //    printf("%d\n",d[edge[i].v]);
                    }
                else
                    z++;
            }

        }
        ll ans=0;
        for(int i=1;i<=n;i++)
        {
            if(d[i]==inf)
                continue;
           // printf("%lld\n",d[i]);
            ans+=d[i]%mod;
        }
           printf("%lld\n",ans%mod);
    }

}

先展示下效果 https://pan.quark.cn/s/e81b877737c1 Node.js 是一种基于 Chrome V8 引擎的 JavaScript 执行环境,它使开发者能够在服务器端执行 JavaScript 编程,显著促进了全栈开发的应用普及。 在 Node.js 的开发流程中,`node_modules` 文件夹用于存储所有依赖的模块,随着项目的进展,该文件夹可能会变得异常庞大,其中包含了众多可能已不再需要的文件和文件夹,这不仅会消耗大量的硬盘空间,还可能减慢项目的加载时间。 `ModClean 2.0` 正是为了应对这一挑战而设计的工具。 `ModClean` 是一款用于清理 `node_modules` 的软件,其核心功能是移除那些不再被使用的文件和文件夹,从而确保项目的整洁性和运行效率。 `ModClean 2.0` 是此工具的改进版本,在原有功能上增加了更多特性,从而提高了清理工作的效率和精确度。 在 `ModClean 2.0` 中,用户可以设置清理规则,例如排除特定的模块或文件类型,以防止误删重要文件。 该工具通常会保留项目所依赖的核心模块,但会移除测试、文档、示例代码等非运行时必需的部分。 通过这种方式,`ModClean` 能够协助开发者优化项目结构,减少不必要的依赖,加快项目的构建速度。 使用 `ModClean` 的步骤大致如下:1. 需要先安装 `ModClean`,在项目的根目录中执行以下命令: ``` npm install modclean -g ```2. 创建配置文件 `.modcleanrc.json` 或 `.modcleanrc.js`,设定希望清理的规则。 比如,可能需要忽略 `LICENSE` 文件或整个 `docs`...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值