例题11.6畅通工程续

/*
不同于最小生成树是对边排序,
最短路径是对点到起点的距离排序

memset可以初始化整个结构体,但只能初始化为0或-1,结构体内指针会变为NULL
#include

fill(arr,arr+n,要赋的值)
fill不能初始化整个结构体,但可以任意赋值
除数组外,vector也可以用这种方法赋值:fill(v.begin(),v.end(),要赋的值)
#include

先存这个
vector graph[1000];//1~999
//所有点的相邻点及其距离???

再初始化这个
int dis[200];//0~199
//点到起点的距离

最后BFS

*/
#include
#include
#include
#include
#include
using namespace std;

const int INF=INT_MAX;

struct Point
{
    int id;//0~200
    int distance;
    bool operator<(const Point& p)const
    {
return distance>p.distance;
    }
    Point (int i,int d)
    {
        id=i;
        d=distance;
    }
};

struct Edge{
    //double from;
    int to;//双向边分成了两条
    int length;
    Edge(int t,int l)
    {
        to=t;
        length=l;
    }
};

vector graph[1000];//1~999
//所有点的相邻点及其距离???

int dis[200];//0~199
//每个点到起点的距离

//BFS
void Dijkstra(int s)//源点s
{
    priority_queue q;
    dis[s]=0;
    q.push(Point(s,dis[s]));//源点入队
    while(!q.empty())
    {
        int u=q.top().id;//距离最小的边的点的id
        q.pop();
        for(int i=0;i        {
            int v=graph[u][i].to;//相连点的编号
            int d=graph[u][i].length;//相连点的距离
if(dis[v]>dis[u]+d)
            {
                dis[v]=dis[u]+d;
                q.push(Point(v,dis[v]));
            }

        }

    }
}

int main() {
    int n,m;//点数量,边数量
while (cin >>n>>m) { 

       fill(dis,dis+n,INF);
       
       memset(graph,0,sizeof(graph));//不能用fill(graph,graph+1000,0);因为fill不能初始化结构体

        for(int i=1;i<=m;i++)
        {
            int from,to,length;
cin>>from>>to>>length;
            graph[from].push_back(Edge(to,length));
            graph[to].push_back(Edge(from,length));
        }

        int s,t;//起点,终点
cin>>s>>t;
        Dijkstra(s);
        
        if(dis[t]==INF)dis[t]=-1;
        cout<
    }
}
全部评论

相关推荐

hanliu:1. 排版与格式问题字体与对齐问题:标题和内容的字体大小差异不够明显,无法迅速吸引目光。某些文字看起来有些拥挤(比如校园经历中的“班委成员”部分)。2. 内容逻辑性模块顺序问题:实习经历放在较靠后的位置,实际上这部分内容对应聘来说更重要,建议提前突出。细节表述不够突出:比如教育背景部分的专业课程仅仅列出名字,没有说明自己在这些课程中表现如何或者掌握了什么技能,缺乏量化描述。多余内容:例如“班委成员”和“宣传委员”这类校园经历,叙述过于普通,缺乏和岗位相关的实质性贡献。,建议简写。3. 措辞专业性表达不够精准:例如“协助班长与团支书更好地为同学服务”显得较为笼统,没有实际成果的体现。用词重复:如“学习了焊接”“学习了光检”等重复词语较多,缺乏丰富的动词来展示个人能力(如“负责”“优化”“改进”等)。技能展示不足:虽然列出了UG和CAD证书,但没有明确提到这些技能如何在实际工作中发挥作用。4. 技能匹配度技能深度不足:虽然列出了掌握的软件和技术,但没有描述技能水平(如“熟练掌握”“精通”),也没有具体案例支持这些技能。缺乏岗位导向性:比如针对机械设计与制造方向,实习经历提到了“E6尾灯项目”,但没有详细说明自己在其中的技术贡献,可能会显得经验描述泛泛而谈。5. 自我评价问题表达空泛:如“具有良好的沟通协调能力”“责任心强”之类的描述太常见,没有让人眼前一亮的特点。缺乏成果支持:自我评价中的能力没有用具体项目、经历或成就来验证,可信度较弱。 兄弟加油
点赞 评论 收藏
分享
01-18 09:26
已编辑
门头沟学院 Java
王桑的大offer:建议中间件那块写熟悉即可,写掌握 面试包被拷打到昏厥
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务