我在寻找两个url之间的最短路径时遇到困难csv中列出了一堆用逗号分隔的网站。每个网站都可以在该页面的超链接中访问下一个网站例如,如果文件读取espn.com、espn.com/nba、espn.com/nba schedules,则可以从espn.com转到nba页面,从nba页面转到nba时间表。我的工作是找到从一个网站到另一个网站的最少点击次数到目前为止,我是如何存储这个文件的。我使用的是存储的stl无序映射。

ifstream inFile;
ofstream outFile;
inFile.open("urls.csv");
string line;
unordered_map<string, vector<string>> urlAdjList;
while(getline(inFile, line))  //Reads each line one at a time.
{
    int firstWord = 0;
    istringstream iss(line);
    string firstURL, url;
    while(iss >> url)
    {
        if(firstWord == 0 && url != "|")
        {
            firstURL = url;
            urlAdjList[firstURL];
            firstWord = 1;
                outFile << firstURL << endl;
        }
        else
            urlAdjList[firstURL].push_back(url);
    }
}
//Find the shortest path between mURL and nURL?

我的问题是我是否正确存储了它?我需要使用dijkstra算法还是广度优先搜索?

最佳答案

Dijkstra的算法只有在超链接之间切换的代价不同时才有效。
所以更喜欢男朋友。
o(v)优于o((v+e)log(v+e)){v-顶点,e-边}
最好使用vector>将图存储在ids的邻接列表中,而不是存储在vector>中。使用数组标识id的url。

07-27 18:23