原题链接:添加链接描述
class Solution {
public:
int networkBecomesIdle(vector<vector<int>>& edges, vector<int>& patience) {
int n=patience.size();
vector<int> d(n,INT_MAX);
vector<vector<int>> adj(n);
vector<int> visit(n);
for(auto x:edges)
{
int a=x[0],b=x[1];
adj[a].push_back(b);
adj[b].push_back(a);
}
queue<int> q; q.push(0);
d[0]=0;
visit[0]=1;
while(!q.empty())
{
int now=q.front(); q.pop();
for(auto x:adj[now])
{
if(!visit[x])
{
if(d[now]+1<d[x])
{
visit[x]=1;
d[x]=d[now]+1;
q.push(x);
}
}
}
}
int res=0;
for(int i=1;i<n;i++)
{
int dis=d[i]*2;
int num=(dis-1)/patience[i];
res=max(res,num*patience[i]+dis);
}
return res+1;
}
};