• 大小: 3KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-07
  • 语言: C/C++
  • 标签: 路径  

资源简介

从文件读入。程序运行时输入源点和目的节点,运行输出在这两点之间的所有路径,并写到输出文件中,非常高效。

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#include 

using namespace std;

int INFINITY = 0xffffffff;

int main()
{
//    ifstream in(“Graph10-20.txt“);
    ifstream in(“graphExtention.txt“);
    //ifstream in(“Graph7-12(1).txt“);
    ofstream out(“paths.txt“);

    if(!in)
    {
        cout << “Error open graph.txt“ << endl;
        return 1;
    }

    int n m num;
    int i j;
int pathCount = 0;

    in >> n;

    int size = n ;

    int **graph = new int*[size];
    for(i = 0; i < size; i++)
    {
        graph[i] = new int[size];
        // for(j = 0; j < size; j++) graph[j] = 0;
    }

    for(i = 0; i < n; i++)
        for(j = 0; j < n; j++)
            in >> graph[i][j];


    cout << “Graph ok“ << endl;

    cout << “Input your start and end“ << endl;
    int from to;
    cin >> from >> to;

    assert(from < size);
    assert(to < size);

    vector vqueue;
    vector parent;
    int pos = 0;
    int cur;


    int top;
    int count;

    stack path;
    bool visited = false;

    vector whichOne;
    vector nodeCount;
    for(i = 0; i < n; i++) nodeCount.push_back(1);

    vqueue.push_back(from);
    parent.push_back(-1);
whichOne.push_back(1);
//nodeCount[from]++;

bool changed = false;
    while(pos < vqueue.size())
    {
        top = vqueue[pos++];
        // push every node adjecent to the queue
        for(i = 0; i < size; i++)
        {
            if(i == from) continue;
            if(graph[top][i] != 0)
            {
                //visited before?
                {
                    visited = false;
                    cur = pos - 1;
                    while(parent[cur] != -1 && !visited)
                    {
    

评论

共有 条评论