for (int i = 0; i < pre[now].size(); ++i) {
        dfs(pre[now][i], mayin, mayout, path); 
    }
    path.pop_back();
在dfs时,我感觉path去尾时,应该放在dfs语句下面。因为若有多个结点,则前的几个几个点会影响路径。
    for (int i = 0; i < pre[now].size(); ++i) {    
        dfs(pre[now][i], mayin, mayout, path); 
        path.pop_back();
    }