Your organization uses a security camera system managed through a permissions dataset. Each permission entry is a triple describing a relationship between two entities: (entityId, relationship, objectId). There are four possible relationships:
(user, "cameraOwner", camera): the user directly owns the camera.(user, "groupMember", group): the user belongs to the group.(group, "cameraOwner", camera): the group owns the camera and grants access to users who belong to this group, directly or indirectly.(group, "groupMember", group): the first group is nested inside the second, inheriting its permissions. Group-membership relationships contain no cycles.
The set of cameras in the system consists of all objectId values from "cameraOwner" entries. A user has access to a camera if the user directly owns it, or if the user belongs to a group that owns it (directly or through nested group membership). Group nesting may be arbitrarily deep, and a user may belong to multiple groups.
Exactly one user in the organization is the admin user, who has access to every camera in the system. Given permissions, return the ID of the admin user.
Constraints:
- 1 ≤
permissions.length≤ 105 permissions[i].length= 3- 1 ≤
permissions[i][j].length≤ 50 - User IDs begin with
"user", group IDs begin with"group", and camera IDs begin with"camera". - Exactly one Admin user is guaranteed to exist.
Example 1:
Input: permissions = [["user1", "cameraOwner", "camera1"], ["user1", "groupMember", "group1"], ["group1", "cameraOwner", "camera2"], ["group1", "groupMember", "group2"], ["group2", "cameraOwner", "camera3"], ["user2", "cameraOwner", "camera3"], ["user2", "groupMember", "group1"], ["user3", "groupMember", "group2"], ["user3", "cameraOwner", "camera1"]] Output: "user1" Explanation: The camera universe is {camera1, camera2, camera3}. "user1" owns "camera1" directly, accesses "camera2" through "group1", and accesses "camera3" through "group1" to "group2", covering all three. "user2" misses "camera1"; "user3" misses "camera2" Only "user1" is the admin.
Example 2:
Input: permissions = [["user1", "cameraOwner", "camera1"], ["user1", "groupMember", "group1"], ["group1", "groupMember", "group2"], ["group2", "cameraOwner", "camera2"], ["group2", "groupMember", "group3"], ["group3", "cameraOwner", "camera3"], ["user2", "cameraOwner", "camera1"], ["user2", "cameraOwner", "camera2"]] Output: "user1"
Example 3:
Input: permissions = [["user1", "groupMember", "group1"], ["user1", "groupMember", "group2"], ["group1", "cameraOwner", "camera1"], ["group2", "cameraOwner", "camera2"], ["group2", "cameraOwner", "camera3"], ["user2", "groupMember", "group1"], ["user2", "cameraOwner", "camera2"]] Output: "user1"
